1 | */* GTK - The GIMP Toolkit* |

2 | * * Copyright (C) 2011 Chun-wei Fan <fanc999@yahoo.com.tw>* |

3 | * ** |

4 | * * Author: Chun-wei Fan <fanc999@yahoo.com.tw>* |

5 | * ** |

6 | * * This library is free software; you can redistribute it and/or* |

7 | * * modify it under the terms of the GNU Lesser General Public* |

8 | * * License as published by the Free Software Foundation; either* |

9 | * * version 2 of the License, or (at your option) any later version.* |

10 | * ** |

11 | * * This library is distributed in the hope that it will be useful,* |

12 | * * but WITHOUT ANY WARRANTY; without even the implied warranty of* |

13 | * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU* |

14 | * * Lesser General Public License for more details.* |

15 | * ** |

16 | * * You should have received a copy of the GNU Lesser General Public* |

17 | * * License along with this library. If not, see <http://www.gnu.org/licenses/>.* |

18 | * */* |

19 | |

20 | __#include <float.h>__ |

21 | |

22 | __#ifndef HAVE_DECL_ISNAN__ |

23 | */* it seems of the supported compilers only* |

24 | * * MSVC does not have isnan(), but it does* |

25 | * * have _isnan() which does the same as isnan()* |

26 | * */* |

27 | *static* **inline** gboolean |

28 | isnan (*double* x) |

29 | { |

30 | **return** _isnan (x); |

31 | } |

32 | __#endif__ |

33 | |

34 | __#ifndef HAVE_DECL_ISINF__ |

35 | */* Unfortunately MSVC does not have finite()* |

36 | * * but it does have _finite() which is the same* |

37 | * * as finite() except when x is a NaN* |

38 | * */* |

39 | *static* **inline** gboolean |

40 | isinf (*double* x) |

41 | { |

42 | **return** (!_finite (x) && !_isnan (x)); |

43 | } |

44 | __#endif__ |

45 | |

46 | */* Workaround for round() for non-GCC/non-C99 compilers */* |

47 | __#ifndef HAVE_ROUND__ |

48 | *static* **inline** *double* |

49 | round (*double* x) |

50 | { |

51 | **if** (x >= `0`) |

52 | **return** floor (x + `0.5`); |

53 | **else** |

54 | **return** ceil (x - `0.5`); |

55 | } |

56 | __#endif__ |

57 | |