module core.math;

pragma(LDC_intrinsic, "llvm.sqrt.f#") T
llvm_sqrt(T)(T x) pure nothrow @nogc @safe;

float  sqrt(float x ) => x < 0.0f ? float.nan  : llvm_sqrt(x);
double sqrt(double x) => x < 0.0f ? double.nan : llvm_sqrt(x);

pragma(LDC_intrinsic, "llvm.fabs.f#") T
llvm_fabs(T)(T x) pure nothrow @nogc @safe;

float fabs(float x) => llvm_fabs(x);

