summaryrefslogtreecommitdiffstats
path: root/byterun/compare.c
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1995-07-27 17:41:09 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1995-07-27 17:41:09 +0000
commit863984ea8ba4be4fc317680c3c457aa8f89c2c72 (patch)
treebf5238495f6f944178e294c623a68ceafee97df5 /byterun/compare.c
parentb44ab158b2735be981330ff8a0d696051a246cc6 (diff)
Ajout du tag Double_array_tag.
Deplacement de copy_double dans floats.c. git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@153 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'byterun/compare.c')
-rw-r--r--byterun/compare.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/byterun/compare.c b/byterun/compare.c
index 1c9919edf..99c26321d 100644
--- a/byterun/compare.c
+++ b/byterun/compare.c
@@ -42,6 +42,18 @@ static long compare_val(v1, v2)
double d2 = Double_val(v2);
if (d1 == d2) return 0; else if (d1 < d2) return -1; else return 1;
}
+ case Double_array_tag: {
+ mlsize_t sz1 = Wosize_val(v1);
+ mlsize_t sz2 = Wosize_val(v2);
+ mlsize_t i;
+ if (sz1 != sz2) return sz1 - sz2;
+ for (i = 0; i < sz1; i++) {
+ double d1 = Double_field(v1, i);
+ double d2 = Double_field(v2, i);
+ if (d1 != d2) { if (d1 < d2) return -1; else return 1; }
+ }
+ return 0;
+ }
case Abstract_tag:
case Final_tag:
invalid_argument("equal: abstract value");