summaryrefslogtreecommitdiff
path: root/lib/scalaires.c
diff options
context:
space:
mode:
authorbiouman <biouman>2001-04-30 01:21:20 +0000
committerbiouman <biouman>2001-04-30 01:21:20 +0000
commit51a7864b4b789583ea445af47324a9b613336162 (patch)
tree3c786d88388db0a88f65f1fe7acbe9125280fa08 /lib/scalaires.c
parenta578580b607c8cadf22b457d51431042e3896271 (diff)
*** empty log message ***
Diffstat (limited to 'lib/scalaires.c')
-rw-r--r--lib/scalaires.c18
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;