diff options
author | biouman <biouman> | 2001-04-30 01:21:20 +0000 |
---|---|---|
committer | biouman <biouman> | 2001-04-30 01:21:20 +0000 |
commit | 51a7864b4b789583ea445af47324a9b613336162 (patch) | |
tree | 3c786d88388db0a88f65f1fe7acbe9125280fa08 /lib/scalaires.c | |
parent | a578580b607c8cadf22b457d51431042e3896271 (diff) |
*** empty log message ***
Diffstat (limited to 'lib/scalaires.c')
-rw-r--r-- | lib/scalaires.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/lib/scalaires.c b/lib/scalaires.c index b853741..14b3db2 100644 --- a/lib/scalaires.c +++ b/lib/scalaires.c @@ -7,6 +7,12 @@ #include "scalaires.h" #include "exceptions.h" #include <math.h> +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define _(x) x +#endif + #define PRECISION 1E6 static int pgcd(int a, int b) @@ -31,19 +37,25 @@ rationnel rat_constr_zero(void) rationnel rat_constr(int num, int denom) { /* cree une fraction */ rationnel temp; + int sgnnum = 1, sgndenom = 1; + if (num < 0) { + sgnnum = -1; + num = -num; + } + if (denom < 0) { + sgndenom = -1; denom = -denom; - num = -num; } if (!num) { temp.num=0; temp.denom=1; } else if (denom) { - temp.num = num / pgcd(num, denom); + temp.num = sgnnum * sgndenom * num / pgcd(num, denom); temp.denom = denom / pgcd(num, denom); } else { - exception(1,"rat_constr: division par zero"); + exception(1,_("rat_constr: division by zero")); } return temp; |