From ef13c4925d7ea6f74621168ea8f1b054247d86e6 Mon Sep 17 00:00:00 2001 From: jnthn Date: Mon, 8 Apr 2013 23:46:05 +0200 Subject: [PATCH] Implement div_In. --- lib/QAST/JASTCompiler.nqp | 1 + src/org/perl6/nqp/runtime/Ops.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib/QAST/JASTCompiler.nqp b/lib/QAST/JASTCompiler.nqp index b269975..077301e 100644 --- a/lib/QAST/JASTCompiler.nqp +++ b/lib/QAST/JASTCompiler.nqp @@ -1552,6 +1552,7 @@ QAST::OperationsJAST.map_classlib_core_op('mul_I', $TYPE_OPS, 'mul_I', [$RT_OBJ, QAST::OperationsJAST.map_jvm_core_op('mul_n', 'dmul', [$RT_NUM, $RT_NUM], $RT_NUM); QAST::OperationsJAST.map_jvm_core_op('div_i', 'ldiv', [$RT_INT, $RT_INT], $RT_INT); QAST::OperationsJAST.map_classlib_core_op('div_I', $TYPE_OPS, 'div_I', [$RT_OBJ, $RT_OBJ, $RT_OBJ], $RT_OBJ, :tc); +QAST::OperationsJAST.map_classlib_core_op('div_In', $TYPE_OPS, 'div_In', [$RT_OBJ, $RT_OBJ], $RT_NUM, :tc); QAST::OperationsJAST.map_jvm_core_op('div_n', 'ddiv', [$RT_NUM, $RT_NUM], $RT_NUM); QAST::OperationsJAST.map_jvm_core_op('mod_i', 'lrem', [$RT_INT, $RT_INT], $RT_INT); QAST::OperationsJAST.map_classlib_core_op('mod_I', $TYPE_OPS, 'mod_I', [$RT_OBJ, $RT_OBJ, $RT_OBJ], $RT_OBJ, :tc); diff --git a/src/org/perl6/nqp/runtime/Ops.java b/src/org/perl6/nqp/runtime/Ops.java index b5a822b..ea55ace 100644 --- a/src/org/perl6/nqp/runtime/Ops.java +++ b/src/org/perl6/nqp/runtime/Ops.java @@ -3228,6 +3228,10 @@ public static SixModelObject div_I(SixModelObject a, SixModelObject b, SixModelO return makeBI(tc, type, getBI(tc, a).divide(getBI(tc, b))); } + public static double div_In(SixModelObject a, SixModelObject b, ThreadContext tc) { + return new BigDecimal(getBI(tc, a)).divide(new BigDecimal(getBI(tc, b))).doubleValue(); + } + public static SixModelObject mod_I(SixModelObject a, SixModelObject b, SixModelObject type, ThreadContext tc) { return makeBI(tc, type, getBI(tc, a).mod(getBI(tc, b))); }