mirror of
https://github.com/Z3Prover/z3
synced 2026-06-25 01:50:33 +00:00
Add numeral extraction helpers to Java API (#8978)
New methods: - Expr.getNumeralDouble(): retrieve any numeral as a double - IntNum.getUint(): extract numeral as unsigned 32-bit value - IntNum.getUint64(): extract numeral as unsigned 64-bit value - RatNum.getSmall(): numerator/denominator as int64 pair - RatNum.getRationalInt64(): numerator/denominator (returns null on overflow) Each is a thin wrapper around the existing Native binding. Added examples to JavaExample.java covering all new methods.
This commit is contained in:
parent
9256dd66e6
commit
bebad7da50
4 changed files with 125 additions and 1 deletions
|
|
@ -60,6 +60,34 @@ public class RatNum extends RealExpr
|
|||
return new BigInteger(n.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the numerator and denominator as 64-bit integers.
|
||||
* Throws if the value does not fit in 64-bit integers.
|
||||
* @return a two-element array [numerator, denominator]
|
||||
**/
|
||||
public long[] getSmall()
|
||||
{
|
||||
Native.LongPtr num = new Native.LongPtr();
|
||||
Native.LongPtr den = new Native.LongPtr();
|
||||
if (!Native.getNumeralSmall(getContext().nCtx(), getNativeObject(), num, den))
|
||||
throw new Z3Exception("Numeral does not fit in int64");
|
||||
return new long[] { num.value, den.value };
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the numerator and denominator as 64-bit integers.
|
||||
* Returns null if the value does not fit in 64-bit integers.
|
||||
* @return a two-element array [numerator, denominator], or null
|
||||
**/
|
||||
public long[] getRationalInt64()
|
||||
{
|
||||
Native.LongPtr num = new Native.LongPtr();
|
||||
Native.LongPtr den = new Native.LongPtr();
|
||||
if (!Native.getNumeralRationalInt64(getContext().nCtx(), getNativeObject(), num, den))
|
||||
return null;
|
||||
return new long[] { num.value, den.value };
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string representation in decimal notation.
|
||||
* Remarks: The result
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue