/* Copyright (C) 2017-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: dk4math.ctr */ /** @file dk4math.c The dk4math module. */ #line 243 "dk4math.ctr" #include "dk4conf.h" #include "dk4math.h" #if (!(DK4_HAVE_RINT)) double dk4ma_rint(double x) { return (floor(x+0.5)); } #endif #if (!(DK4_HAVE_ISGREATER)) int dk4ma_isgreater(double a, double b) { int back = 0; #if DK4_HAVE_ISFINITE if ((isfinite(a)) && (isfinite(b))) { #else #if DK4_HAVE__FINITE if ((_finite(a)) && (_finite(b))) { #endif #endif if (a > b) { back = 1; } #if DK4_HAVE_ISFINITE } #else #if DK4_HAVE__FINITE } #endif #endif return back; } #endif #if (!(DK4_HAVE_ISGREATEREQUAL)) int dk4ma_isgreaterequal(double a, double b) { int back = 0; #if DK4_HAVE_ISFINITE if ((isfinite(a)) && (isfinite(b))) { #else #if DK4_HAVE__FINITE if ((_finite(a)) && (_finite(b))) { #endif #endif if (a >= b) { back = 1; } #if DK4_HAVE_ISFINITE } #else #if DK4_HAVE__FINITE } #endif #endif return back; } #endif #if (!(DK4_HAVE_ISLESS)) int dk4ma_isless(double a, double b) { int back = 0; #if DK4_HAVE_ISFINITE if ((isfinite(a)) && (isfinite(b))) { #else #if DK4_HAVE__FINITE if ((_finite(a)) && (_finite(b))) { #endif #endif if (a < b) { back = 1; } #if DK4_HAVE_ISFINITE } #else #if DK4_HAVE__FINITE } #endif #endif return back; } #endif #if (!(DK4_HAVE_ISLESSEQUAL)) int dk4ma_islessequal(double a, double b) { int back = 0; #if DK4_HAVE_ISFINITE if ((isfinite(a)) && (isfinite(b))) { #else #if DK4_HAVE__FINITE if ((_finite(a)) && (_finite(b))) { #endif #endif if (a <= b) { back = 1; } #if DK4_HAVE_ISFINITE } #else #if DK4_HAVE__FINITE } #endif #endif return back; } #endif int dk4ma_is_finite(double d) { int back = 0; #if _WIN32 back = ((0 != _finite(d)) ? 1 : 0); #else back = ((0 != isfinite(d)) ? 1 : 0); #endif return back; } int dk4ma_is_normal(double d) { int back = 0; #if _WIN32 switch (_fpclass(d)) { case _FPCLASS_NN : case _FPCLASS_NZ : case _FPCLASS_PZ : case _FPCLASS_PN : { back = 1; } break; } #else back = ((0 != isnormal(d)) ? 1 : 0); #endif return back; } /* vim: set ai sw=4 ts=4 : */