3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-06 09:34:08 +00:00

Final adjustments for the FP integration

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
Christoph M. Wintersteiger 2015-01-21 17:58:31 +00:00
parent 1209302fe6
commit 2cb84280d8
7 changed files with 192 additions and 216 deletions

View file

@ -3,11 +3,13 @@ RELEASE NOTES
Version 4.4
=============
- New feature: Support for the theory of floating-point numbers. This comes in the form of logics (QF_FP and QF_FPBV), tactics (qffp and qffpbv), as well as a theory plugin that allows theory combinations. Z3 supports the official SMT theory definition of FP (see http://smtlib.cs.uiowa.edu/theories/FloatingPoint.smt2) in SMT2 files, as well as all APIs.
- New feature: Stochastic local search engine for bit-vector formulas (see the qfbv-sls tactic).
See also: Froehlich, Biere, Wintersteiger, Hamadi: Stochastic Local Search
for Satisfiability Modulo Theories, AAAI 2015.
- Fixed various bugs reported by Marc Brockschmidt, Venkatesh-Prasad Ranganath, Enric Carbonell, Morgan Deters, Tom Ball, and Codeplex users rsas, clockish, Heizmann.
- Fixed various bugs reported by Marc Brockschmidt, Venkatesh-Prasad Ranganath, Enric Carbonell, Morgan Deters, Tom Ball, Malte Schwerhoff, and Codeplex users rsas, clockish, Heizmann.
Version 4.3.2
=============

View file

@ -31,6 +31,7 @@ try:
cleanup_API('../src/api/z3_polynomial.h', 'tmp/z3_polynomial.h')
cleanup_API('../src/api/z3_rcf.h', 'tmp/z3_rcf.h')
cleanup_API('../src/api/z3_interp.h', 'tmp/z3_interp.h')
cleanup_API('../src/api/z3_fpa.h', 'tmp/z3_fpa.h')
print "Removed annotations from z3_api.h."
try:
@ -46,6 +47,7 @@ try:
os.remove('tmp/z3_polynomial.h')
os.remove('tmp/z3_rcf.h')
os.remove('tmp/z3_interp.h')
os.remove('tmp/z3_fpa.h')
print "Removed temporary file z3_api.h."
os.remove('tmp/website.dox')
print "Removed temporary file website.dox"

View file

@ -713,39 +713,10 @@ FILE_PATTERNS = website.dox \
z3_polynomial.h \
z3_rcf.h \
z3_interp.h \
z3_fpa.h \
z3++.h \
z3py.py \
ApplyResult.cs \
AST.cs \
ASTMap.cs \
ASTVector.cs \
Config.cs \
Constructor.cs \
Context.cs \
DecRefQUeue.cs \
Enumerations.cs \
Expr.cs \
FuncDecl.cs \
FuncInterp.cs \
Goal.cs \
Log.cs \
Model.cs \
Native.cs \
Numeral.cs \
Params.cs \
Pattern.cs \
Probe.cs \
Quantifier.cs \
Solver.cs \
Sort.cs \
Statistics.cs \
Status.cs \
Symbol.cs \
Tactic.cs \
Util.cs \
Version.cs \
Z3Exception.cs \
Z3Object.cs \
*.cs \
*.java
# The RECURSIVE tag can be used to turn specify whether or not subdirectories

View file

@ -2000,25 +2000,22 @@ public class Context extends IDisposable
/**
* Create a universal Quantifier.
* @param sorts the sorts of the bound variables.
* @param names names of the bound variables
* @param body the body of the quantifier.
* @param weight quantifiers are associated with weights indicating the importance of using the quantifier during instantiation. By default, pass the weight 0.
* @param patterns array containing the patterns created using {@code MkPattern}.
* @param noPatterns array containing the anti-patterns created using {@code MkPattern}.
* @param quantifierID optional symbol to track quantifier.
* @param skolemID optional symbol to track skolem constants.
*
* Remarks: Creates a forall formula, where
* {@code weight"/> is the weight, <paramref name="patterns} is
* an array of patterns, {@code sorts} is an array with the sorts
* of the bound variables, {@code names} is an array with the
* 'names' of the bound variables, and {@code body} is the body
* of the quantifier. Quantifiers are associated with weights indicating the
* importance of using the quantifier during instantiation.
*
* @param sorts the sorts of the bound variables.
* @param names names of the bound variables
* @param body the body of the quantifier.
* @param weight quantifiers are
* associated with weights indicating the importance of using the quantifier
* during instantiation. By default, pass the weight 0.
* @param patterns array containing the patterns created using
* {@code MkPattern}.
* @param noPatterns array containing the anti-patterns created using {@code MkPattern}.
* @param quantifierID optional symbol to track quantifier.
* @param skolemID optional symbol to track skolem constants.
* importance of using the quantifier during instantiation.
**/
public Quantifier mkForall(Sort[] sorts, Symbol[] names, Expr body,
int weight, Pattern[] patterns, Expr[] noPatterns,

View file

@ -173,7 +173,7 @@ public class Fixedpoint extends Z3Object
/**
* Backtrack one backtracking point.
* Remarks: Note that an exception is thrown if {#code pop}
* Remarks: Note that an exception is thrown if {@code pop}
* is called without a corresponding {@code push}
*
* @see push

View file

@ -769,7 +769,7 @@ typedef enum
- gcd-test - Indicates an integer linear arithmetic lemma that uses a gcd test.
- Z3_OP_PR_HYPER_RESOLVE: Hyper-resolution rule.
- Z3_OP_PR_HYPER_RESOLVE: Hyper-resolution rule.
The premises of the rules is a sequence of clauses.
The first clause argument is the main clause of the rule.

View file

@ -38,7 +38,7 @@ extern "C" {
/**
\brief Create the RoundingMode sort.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_rounding_mode_sort', SORT, (_in(CONTEXT),))
*/
@ -47,7 +47,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the NearestTiesToEven rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_round_nearest_ties_to_even', AST, (_in(CONTEXT),))
*/
@ -56,7 +56,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the NearestTiesToEven rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_rne', AST, (_in(CONTEXT),))
*/
@ -65,7 +65,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the NearestTiesToAway rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_round_nearest_ties_to_away', AST, (_in(CONTEXT),))
*/
@ -74,7 +74,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the NearestTiesToAway rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_rna', AST, (_in(CONTEXT),))
*/
@ -83,7 +83,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the TowardPositive rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_round_toward_positive', AST, (_in(CONTEXT),))
*/
@ -92,7 +92,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the TowardPositive rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_rtp', AST, (_in(CONTEXT),))
*/
@ -101,7 +101,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the TowardNegative rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_round_toward_negative', AST, (_in(CONTEXT),))
*/
@ -110,7 +110,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the TowardNegative rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_rtn', AST, (_in(CONTEXT),))
*/
@ -119,7 +119,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the TowardZero rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_round_toward_zero', AST, (_in(CONTEXT),))
*/
@ -128,7 +128,7 @@ extern "C" {
/**
\brief Create a numeral of RoundingMode sort which represents the TowardZero rounding mode.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_rtz', AST, (_in(CONTEXT),))
*/
@ -137,9 +137,9 @@ extern "C" {
/**
\brief Create a FloatingPoint sort.
\param c logical context.
\param ebits number of exponent bits.
\param sbits number of significand bits.
\param c logical context
\param ebits number of exponent bits
\param sbits number of significand bits
\remark ebits must be larger than 1 and sbits must be larger than 2.
@ -150,7 +150,7 @@ extern "C" {
/**
\brief Create the half-precision (16-bit) FloatingPoint sort.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_sort_half', SORT, (_in(CONTEXT),))
*/
@ -159,7 +159,7 @@ extern "C" {
/**
\brief Create the half-precision (16-bit) FloatingPoint sort.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_sort_16', SORT, (_in(CONTEXT),))
*/
@ -168,7 +168,7 @@ extern "C" {
/**
\brief Create the single-precision (32-bit) FloatingPoint sort.
\param c logical context.
\param c logical context.
def_API('Z3_mk_fpa_sort_single', SORT, (_in(CONTEXT),))
*/
@ -177,7 +177,7 @@ extern "C" {
/**
\brief Create the single-precision (32-bit) FloatingPoint sort.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_sort_32', SORT, (_in(CONTEXT),))
*/
@ -186,7 +186,7 @@ extern "C" {
/**
\brief Create the double-precision (64-bit) FloatingPoint sort.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_sort_double', SORT, (_in(CONTEXT),))
*/
@ -195,7 +195,7 @@ extern "C" {
/**
\brief Create the double-precision (64-bit) FloatingPoint sort.
\param c logical context.
\param c logical context
def_API('Z3_mk_fpa_sort_64', SORT, (_in(CONTEXT),))
*/
@ -204,11 +204,7 @@ extern "C" {
/**
\brief Create the quadruple-precision (128-bit) FloatingPoint sort.
\param c logical context.
\param ebits number of exponent bits
\param sbits number of significand bits
\remark ebits must be larger than 1 and sbits must be larger than 2.
\param c logical context
def_API('Z3_mk_fpa_sort_quadruple', SORT, (_in(CONTEXT),))
*/
@ -217,11 +213,7 @@ extern "C" {
/**
\brief Create the quadruple-precision (128-bit) FloatingPoint sort.
\param c logical context.
\param ebits number of exponent bits
\param sbits number of significand bits
\remark ebits must be larger than 1 and sbits must be larger than 2.
\param c logical context
def_API('Z3_mk_fpa_sort_128', SORT, (_in(CONTEXT),))
*/
@ -230,7 +222,7 @@ extern "C" {
/**
\brief Create a floating-point NaN of sort s.
\param c logical context.
\param c logical context
\param s target sort
def_API('Z3_mk_fpa_nan', AST, (_in(CONTEXT),_in(SORT)))
@ -240,7 +232,7 @@ extern "C" {
/**
\brief Create a floating-point infinity of sort s.
\param c logical context.
\param c logical context
\param s target sort
\param negative indicates whether the result should be negative
@ -253,7 +245,7 @@ extern "C" {
/**
\brief Create a floating-point zero of sort s.
\param c logical context.
\param c logical context
\param s target sort
\param negative indicates whether the result should be negative
@ -272,10 +264,10 @@ extern "C" {
of the resulting expression is automatically determined from the bit-vector sizes
of the arguments.
\params c logical context.
\params sgn sign
\params exp exponent
\params sig significand
\param c logical context
\param sgn sign
\param exp exponent
\param sig significand
def_API('Z3_mk_fpa_fp', AST, (_in(CONTEXT), _in(AST), _in(AST), _in(AST)))
*/
@ -287,9 +279,9 @@ extern "C" {
This function is used to create numerals that fit in a float value.
It is slightly faster than #Z3_mk_numeral since it is not necessary to parse a string.
\params c logical context.
\params v value.
\params ty sort.
\param c logical context
\param v value
\param ty sort
ty must be a FloatingPoint sort
@ -305,9 +297,9 @@ extern "C" {
This function is used to create numerals that fit in a double value.
It is slightly faster than #Z3_mk_numeral since it is not necessary to parse a string.
\params c logical context.
\params v value.
\params ty sort.
\param c logical context
\param v value
\param ty sort
ty must be a FloatingPoint sort
@ -320,8 +312,9 @@ extern "C" {
/**
\brief Create a numeral of FloatingPoint sort from a signed integer.
\params c logical context.
\params v value.
\param c logical context
\param v value
\param ty result sort
ty must be a FloatingPoint sort
@ -334,10 +327,11 @@ extern "C" {
/**
\brief Create a numeral of FloatingPoint sort from a sign bit and two integers.
\params c logical context.
\params sgn sign bit (true == negative).
\params sig significand.
\params exp exponent.
\param c logical context
\param sgn sign bit (true == negative)
\param sig significand
\param exp exponent
\param ty result sort
ty must be a FloatingPoint sort
@ -350,10 +344,11 @@ extern "C" {
/**
\brief Create a numeral of FloatingPoint sort from a sign bit and two 64-bit integers.
\params c logical context.
\params sgn sign bit (true == negative).
\params sig significand.
\params exp exponent.
\param c logical context
\param sgn sign bit (true == negative)
\param sig significand
\param exp exponent
\param ty result sort
ty must be a FloatingPoint sort
@ -366,8 +361,8 @@ extern "C" {
/**
\brief Floating-point absolute value
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
def_API('Z3_mk_fpa_abs', AST, (_in(CONTEXT),_in(AST)))
*/
@ -376,8 +371,8 @@ extern "C" {
/**
\brief Floating-point negation
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
def_API('Z3_mk_fpa_neg', AST, (_in(CONTEXT),_in(AST)))
*/
@ -386,10 +381,10 @@ extern "C" {
/**
\brief Floating-point addition
\param c logical context.
\param rm term of RoundingMode sort.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param rm term of RoundingMode sort
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
rm must be of RoundingMode sort, t1 and t2 must have the same FloatingPoint sort.
@ -400,10 +395,10 @@ extern "C" {
/**
\brief Floating-point subtraction
\param c logical context.
\param rm term of RoundingMode sort.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param rm term of RoundingMode sort
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
rm must be of RoundingMode sort, t1 and t2 must have the same FloatingPoint sort.
@ -414,10 +409,10 @@ extern "C" {
/**
\brief Floating-point multiplication
\param c logical context.
\param rm term of RoundingMode sort.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param rm term of RoundingMode sort
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
rm must be of RoundingMode sort, t1 and t2 must have the same FloatingPoint sort.
@ -428,10 +423,10 @@ extern "C" {
/**
\brief Floating-point division
\param c logical context.
\param rm term of RoundingMode sort.
\param c logical context
\param rm term of RoundingMode sort
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort
The nodes rm must be of RoundingMode sort t1 and t2 must have the same FloatingPoint sort.
@ -442,10 +437,11 @@ extern "C" {
/**
\brief Floating-point fused multiply-add.
\param c logical context.
\param rm term of RoundingMode sort.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param rm term of RoundingMode sort
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sor
\param t3 term of FloatingPoint sort
The result is round((t1 * t2) + t3)
@ -458,9 +454,9 @@ extern "C" {
/**
\brief Floating-point square root
\param c logical context.
\param rm term of RoundingMode sort.
\param t term of FloatingPoint sort.
\param c logical context
\param rm term of RoundingMode sort
\param t term of FloatingPoint sort
rm must be of RoundingMode sort, t must have FloatingPoint sort.
@ -471,9 +467,9 @@ extern "C" {
/**
\brief Floating-point remainder
\param c logical context.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
t1 and t2 must have the same FloatingPoint sort.
@ -485,9 +481,9 @@ extern "C" {
\brief Floating-point roundToIntegral. Rounds a floating-point number to
the closest integer, again represented as a floating-point number.
\param c logical context.
\param rm term of RoundingMode sort.
\param t term of FloatingPoint sort.
\param c logical context
\param rm term of RoundingMode sort
\param t term of FloatingPoint sort
t must be of FloatingPoint sort.
@ -498,9 +494,9 @@ extern "C" {
/**
\brief Minimum of floating-point numbers.
\param c logical context.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
t1, t2 must have the same FloatingPoint sort.
@ -511,9 +507,9 @@ extern "C" {
/**
\brief Maximum of floating-point numbers.
\param c logical context.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
t1, t2 must have the same FloatingPoint sort.
@ -524,9 +520,9 @@ extern "C" {
/**
\brief Floating-point less than or equal.
\param c logical context.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
t1 and t2 must have the same FloatingPoint sort.
@ -537,9 +533,9 @@ extern "C" {
/**
\brief Floating-point less than.
\param c logical context.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
t1 and t2 must have the same FloatingPoint sort.
@ -550,9 +546,9 @@ extern "C" {
/**
\brief Floating-point greater than or equal.
\param c logical context.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
t1 and t2 must have the same FloatingPoint sort.
@ -563,9 +559,9 @@ extern "C" {
/**
\brief Floating-point greater than.
\param c logical context.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
t1 and t2 must have the same FloatingPoint sort.
@ -576,9 +572,9 @@ extern "C" {
/**
\brief Floating-point equality.
\param c logical context.
\param t1 term of FloatingPoint sort.
\param t2 term of FloatingPoint sort.
\param c logical context
\param t1 term of FloatingPoint sort
\param t2 term of FloatingPoint sort
Note that this is IEEE 754 equality (as opposed to SMT-LIB =).
@ -591,8 +587,8 @@ extern "C" {
/**
\brief Predicate indicating whether t is a normal floating-point number.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
t must have FloatingPoint sort.
@ -603,8 +599,8 @@ extern "C" {
/**
\brief Predicate indicating whether t is a subnormal floating-point number.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
t must have FloatingPoint sort.
@ -615,8 +611,8 @@ extern "C" {
/**
\brief Predicate indicating whether t is a floating-point number with zero value, i.e., +zero or -zero.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
t must have FloatingPoint sort.
@ -627,8 +623,8 @@ extern "C" {
/**
\brief Predicate indicating whether t is a floating-point number representing +oo or -oo.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
t must have FloatingPoint sort.
@ -639,8 +635,8 @@ extern "C" {
/**
\brief Predicate indicating whether t is a NaN.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
t must have FloatingPoint sort.
@ -651,8 +647,8 @@ extern "C" {
/**
\brief Predicate indicating whether t is a negative floating-point number.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
t must have FloatingPoint sort.
@ -663,8 +659,8 @@ extern "C" {
/**
\brief Predicate indicating whether t is a positive floating-point number.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
t must have FloatingPoint sort.
@ -678,9 +674,9 @@ extern "C" {
Produces a term that represents the conversion of a bit-vector term bv to a
floating-point term of sort s.
\param c logical context.
\param bv a bit-vector term.
\param s floating-point sort.
\param c logical context
\param bv a bit-vector term
\param s floating-point sort
s must be a FloatingPoint sort, t must be of bit-vector sort, and the bit-vector
size of bv must be equal to ebits+sbits of s. The format of the bit-vector is
@ -697,10 +693,10 @@ extern "C" {
floating-point term of sort s. If necessary, the result will be rounded according
to rounding mode rm.
\param c logical context.
\param rm term of RoundingMode sort.
\param t term of FloatingPoint sort.
\param s floating-point sort.
\param c logical context
\param rm term of RoundingMode sort
\param t term of FloatingPoint sort
\param s floating-point sort
s must be a FloatingPoint sort, rm must be of RoundingMode sort, t must be of floating-point sort.
@ -715,10 +711,10 @@ extern "C" {
floating-point term of sort s. If necessary, the result will be rounded according
to rounding mode rm.
\param c logical context.
\param rm term of RoundingMode sort.
\param t term of Real sort.
\param s floating-point sort.
\param c logical context
\param rm term of RoundingMode sort
\param t term of Real sort
\param s floating-point sort
s must be a FloatingPoint sort, rm must be of RoundingMode sort, t must be of real sort.
@ -734,10 +730,10 @@ extern "C" {
2's complement format. If necessary, the result will be rounded according
to rounding mode rm.
\param c logical context.
\param rm term of RoundingMode sort.
\param t term of bit-vector sort.
\param s floating-point sort.
\param c logical context
\param rm term of RoundingMode sort
\param t term of bit-vector sort
\param s floating-point sort
s must be a FloatingPoint sort, rm must be of RoundingMode sort, t must be of bit-vector sort.
@ -753,10 +749,10 @@ extern "C" {
2's complement format. If necessary, the result will be rounded according
to rounding mode rm.
\param c logical context.
\param rm term of RoundingMode sort.
\param t term of bit-vector sort.
\param s floating-point sort.
\param c logical context
\param rm term of RoundingMode sort
\param t term of bit-vector sort
\param s floating-point sort
s must be a FloatingPoint sort, rm must be of RoundingMode sort, t must be of bit-vector sort.
@ -769,12 +765,12 @@ extern "C" {
Produces a term that represents the conversion of the floating-poiunt term t into a
bit-vector term of size sz in unsigned 2's complement format. If necessary, the result
will be rounded according to rounding mode rm.
will be rounded according to rounding mode rm.
\param c logical context.
\param rm term of RoundingMode sort.
\param t term of FloatingPoint sort.
\param sz size of the resulting bit-vector.
\param c logical context
\param rm term of RoundingMode sort
\param t term of FloatingPoint sort
\param sz size of the resulting bit-vector
def_API('Z3_mk_fpa_to_ubv', AST, (_in(CONTEXT),_in(AST),_in(AST),_in(UINT)))
*/
@ -785,12 +781,12 @@ extern "C" {
Produces a term that represents the conversion of the floating-poiunt term t into a
bit-vector term of size sz in signed 2's complement format. If necessary, the result
will be rounded according to rounding mode rm.
will be rounded according to rounding mode rm.
\param c logical context.
\param rm term of RoundingMode sort.
\param t term of FloatingPoint sort.
\param sz size of the resulting bit-vector.
\param c logical context
\param rm term of RoundingMode sort
\param t term of FloatingPoint sort
\param sz size of the resulting bit-vector
def_API('Z3_mk_fpa_to_sbv', AST, (_in(CONTEXT),_in(AST),_in(AST),_in(UINT)))
*/
@ -803,8 +799,8 @@ extern "C" {
real number. Note that this type of conversion will often result in non-linear
constraints over real terms.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
def_API('Z3_mk_fpa_to_real', AST, (_in(CONTEXT),_in(AST)))
*/
@ -812,14 +808,15 @@ extern "C" {
/**
@name Z3-specific extensions
@name Z3-specific floating-point extensions
*/
/*@{*/
/**
\brief Retrieves the number of bits reserved for the exponent in a FloatingPoint sort.
\param s FloatingPoint sort.
\param c logical context
\param s FloatingPoint sort
def_API('Z3_fpa_get_ebits', UINT, (_in(CONTEXT),_in(SORT)))
*/
@ -828,31 +825,35 @@ extern "C" {
/**
\brief Retrieves the number of bits reserved for the significand in a FloatingPoint sort.
\param s FloatingPoint sort.
\param c logical context
\param s FloatingPoint sort
def_API('Z3_fpa_get_sbits', UINT, (_in(CONTEXT),_in(SORT)))
*/
unsigned Z3_API Z3_fpa_get_sbits(__in Z3_context c, __in Z3_sort s);
/**
\brief Retrieves the sign of a floating-point literal
\brief Retrieves the sign of a floating-point literal.
\param c logical context
\param t a floating-point numeral
\param sgn sign
Remarks: sets \c sgn to 0 if the literal is NaN or positive and to 1 otherwise.
\param t a floating-point numeral.
def_API('Z3_fpa_get_numeral_sign', BOOL, (_in(CONTEXT), _in(AST), _out(INT)))
*/
Z3_bool Z3_API Z3_fpa_get_numeral_sign(__in Z3_context c, __in Z3_ast t, __out int * sgn);
/**
\brief Return the significand value of a floating-point numeral as a string
\brief Return the significand value of a floating-point numeral as a string.
\param c logical context
\param t a floating-point numeral
Remarks: The significand s is always 0 < s < 2.0; the resulting string is long
enough to represent the real significand precisely.
\param t a floating-point numeral.
def_API('Z3_fpa_get_numeral_significand_string', STRING, (_in(CONTEXT), _in(AST)))
*/
Z3_string Z3_API Z3_fpa_get_numeral_significand_string(__in Z3_context c, __in Z3_ast t);
@ -860,7 +861,8 @@ extern "C" {
/**
\brief Return the exponent value of a floating-point numeral as a string
\param t a floating-point numeral.
\param c logical context
\param t a floating-point numeral
def_API('Z3_fpa_get_numeral_exponent_string', STRING, (_in(CONTEXT), _in(AST)))
*/
@ -869,7 +871,9 @@ extern "C" {
/**
\brief Return the exponent value of a floating-point numeral as a signed 64-bit integer
\param t a floating-point numeral.
\param c logical context
\param t a floating-point numeral
\param n exponent
def_API('Z3_fpa_get_numeral_exponent_int64', BOOL, (_in(CONTEXT), _in(AST), _out(INT64)))
*/
@ -878,8 +882,8 @@ extern "C" {
/**
\brief Conversion of a floating-point term into a bit-vector term in IEEE 754-2008 format.
\param c logical context.
\param t term of FloatingPoint sort.
\param c logical context
\param t term of FloatingPoint sort
t must have FloatingPoint sort. The size of the resulting bit-vector is automatically
determined.
@ -899,11 +903,11 @@ extern "C" {
floating-point term of sort s. If necessary, the result will be rounded
according to rounding mode rm.
\param c logical context.
\param rm term of RoundingMode sort.
\param sig significand term of Real sort.
\param exp exponent term of Int sort.
\param s FloatingPoint sort.
\param c logical context
\param rm term of RoundingMode sort
\param sig significand term of Real sort
\param exp exponent term of Int sort
\param s FloatingPoint sort
s must be a FloatingPoint sort, rm must be of RoundingMode sort, t must be of real sort.