./Ultimate.py --spec ../../sv-benchmarks/c/properties/unreach-call.prp --file ../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c --full-output --architecture 32bit -------------------------------------------------------------------------------- Checking for ERROR reachability Using default analysis Version aa418289 Calling Ultimate with: java -Dosgi.configuration.area=/tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data/config -Xmx12G -Xms1G -jar /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data -tc /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/config/TaipanReach.xml -i ../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c -s /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/config/svcomp-Reach-32bit-Taipan_Default.epf --cacsl2boogietranslator.entry.function main --witnessprinter.witness.directory /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan --witnessprinter.witness.filename witness.graphml --witnessprinter.write.witness.besides.input.file false --witnessprinter.graph.data.specification CHECK( init(main()), LTL(G ! call(__VERIFIER_error())) ) --witnessprinter.graph.data.producer Taipan --witnessprinter.graph.data.architecture 32bit --witnessprinter.graph.data.programhash b63905375af38d9971341930078b6c47230c38fd .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. Execution finished normally Using bit-precise analysis Retrying with bit-precise analysis Calling Ultimate with: java -Dosgi.configuration.area=/tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data/config -Xmx12G -Xms1G -jar /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data -tc /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/config/TaipanReach.xml -i ../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c -s /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/config/svcomp-Reach-32bit-Taipan_Bitvector.epf --cacsl2boogietranslator.entry.function main --witnessprinter.witness.directory /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan --witnessprinter.witness.filename witness.graphml --witnessprinter.write.witness.besides.input.file false --witnessprinter.graph.data.specification CHECK( init(main()), LTL(G ! call(__VERIFIER_error())) ) --witnessprinter.graph.data.producer Taipan --witnessprinter.graph.data.architecture 32bit --witnessprinter.graph.data.programhash b63905375af38d9971341930078b6c47230c38fd ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ Execution finished normally Writing output log to file Ultimate.log Writing human readable error path to file UltimateCounterExample.errorpath Result: FALSE --- Real Ultimate output --- This is Ultimate 0.1.23-aa41828 [2018-11-23 12:33:54,937 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 12:33:54,938 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 12:33:54,944 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 12:33:54,944 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 12:33:54,945 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 12:33:54,945 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 12:33:54,947 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 12:33:54,948 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 12:33:54,948 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 12:33:54,949 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 12:33:54,949 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 12:33:54,950 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 12:33:54,951 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 12:33:54,951 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 12:33:54,952 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 12:33:54,952 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 12:33:54,954 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 12:33:54,955 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 12:33:54,956 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 12:33:54,957 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 12:33:54,958 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 12:33:54,959 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 12:33:54,959 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 12:33:54,960 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 12:33:54,960 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 12:33:54,961 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 12:33:54,962 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 12:33:54,962 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 12:33:54,963 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 12:33:54,963 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 12:33:54,963 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 12:33:54,964 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 12:33:54,964 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 12:33:54,964 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 12:33:54,965 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 12:33:54,965 INFO L98 SettingsManager]: Beginning loading settings from /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/config/svcomp-Reach-32bit-Taipan_Default.epf [2018-11-23 12:33:54,975 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 12:33:54,975 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 12:33:54,976 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 12:33:54,976 INFO L133 SettingsManager]: * ... calls to implemented procedures=ONLY_FOR_CONCURRENT_PROGRAMS [2018-11-23 12:33:54,976 INFO L133 SettingsManager]: * User list type=DISABLED [2018-11-23 12:33:54,977 INFO L131 SettingsManager]: Preferences of Abstract Interpretation differ from their defaults: [2018-11-23 12:33:54,977 INFO L133 SettingsManager]: * Explicit value domain=true [2018-11-23 12:33:54,977 INFO L133 SettingsManager]: * Abstract domain for RCFG-of-the-future=PoormanAbstractDomain [2018-11-23 12:33:54,977 INFO L133 SettingsManager]: * Octagon Domain=false [2018-11-23 12:33:54,977 INFO L133 SettingsManager]: * Abstract domain=CompoundDomain [2018-11-23 12:33:54,977 INFO L133 SettingsManager]: * Check feasibility of abstract posts with an SMT solver=true [2018-11-23 12:33:54,977 INFO L133 SettingsManager]: * Use the RCFG-of-the-future interface=true [2018-11-23 12:33:54,978 INFO L133 SettingsManager]: * Interval Domain=false [2018-11-23 12:33:54,978 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 12:33:54,978 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 12:33:54,978 INFO L133 SettingsManager]: * Overapproximate operations on floating types=true [2018-11-23 12:33:54,979 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 12:33:54,979 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 12:33:54,979 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 12:33:54,979 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 12:33:54,979 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 12:33:54,979 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 12:33:54,979 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 12:33:54,979 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 12:33:54,980 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 12:33:54,980 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 12:33:54,980 INFO L133 SettingsManager]: * Size of a code block=SequenceOfStatements [2018-11-23 12:33:54,980 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 12:33:54,980 INFO L133 SettingsManager]: * SMT solver=External_DefaultMode [2018-11-23 12:33:54,980 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 12:33:54,981 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 12:33:54,981 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 12:33:54,981 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 12:33:54,981 INFO L133 SettingsManager]: * Trace refinement strategy=TAIPAN [2018-11-23 12:33:54,981 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 12:33:54,981 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in [2018-11-23 12:33:54,981 INFO L133 SettingsManager]: * Compute Hoare Annotation of negated interpolant automaton, abstraction and CFG=true [2018-11-23 12:33:54,982 INFO L133 SettingsManager]: * Abstract interpretation Mode=USE_PREDICATES Applying setting for plugin de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator: Entry function -> main Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Witness directory -> /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Witness filename -> witness.graphml Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Write witness besides input file -> false Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data specification -> CHECK( init(main()), LTL(G ! call(__VERIFIER_error())) ) Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data producer -> Taipan Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data architecture -> 32bit Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data programhash -> b63905375af38d9971341930078b6c47230c38fd [2018-11-23 12:33:55,005 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 12:33:55,013 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 12:33:55,016 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 12:33:55,017 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 12:33:55,017 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 12:33:55,018 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c [2018-11-23 12:33:55,052 INFO L221 CDTParser]: Created temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data/ff8e88358/9a9f5aca06de406d851d9cc72db0c259/FLAGf9d291c6a [2018-11-23 12:33:55,459 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 12:33:55,459 INFO L161 CDTParser]: Scanning /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c [2018-11-23 12:33:55,463 INFO L355 CDTParser]: About to delete temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data/ff8e88358/9a9f5aca06de406d851d9cc72db0c259/FLAGf9d291c6a [2018-11-23 12:33:55,473 INFO L363 CDTParser]: Successfully deleted /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data/ff8e88358/9a9f5aca06de406d851d9cc72db0c259 [2018-11-23 12:33:55,474 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 12:33:55,475 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 12:33:55,476 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 12:33:55,476 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 12:33:55,478 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 12:33:55,478 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,480 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@2fb74b4d and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55, skipping insertion in model container [2018-11-23 12:33:55,480 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,486 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 12:33:55,499 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 12:33:55,614 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 12:33:55,617 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 12:33:55,634 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 12:33:55,647 INFO L195 MainTranslator]: Completed translation [2018-11-23 12:33:55,647 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55 WrapperNode [2018-11-23 12:33:55,647 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 12:33:55,648 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 12:33:55,648 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 12:33:55,648 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 12:33:55,653 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,658 INFO L185 PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,662 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 12:33:55,662 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 12:33:55,662 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 12:33:55,663 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 12:33:55,705 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,705 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,707 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,708 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,715 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,717 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,718 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... [2018-11-23 12:33:55,719 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 12:33:55,720 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 12:33:55,720 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 12:33:55,720 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 12:33:55,721 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (1/1) ... No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/z3 Starting monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 12:33:55,755 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 12:33:55,755 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 12:33:55,755 INFO L130 BoogieDeclarations]: Found specification of procedure read~real [2018-11-23 12:33:55,756 INFO L130 BoogieDeclarations]: Found specification of procedure write~int [2018-11-23 12:33:55,756 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 12:33:55,756 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 12:33:55,756 INFO L130 BoogieDeclarations]: Found specification of procedure write~real [2018-11-23 12:33:55,756 INFO L130 BoogieDeclarations]: Found specification of procedure #Ultimate.alloc [2018-11-23 12:33:55,756 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 12:33:55,756 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 12:33:55,756 INFO L130 BoogieDeclarations]: Found specification of procedure read~int [2018-11-23 12:33:55,756 INFO L130 BoogieDeclarations]: Found specification of procedure __VERIFIER_assert [2018-11-23 12:33:55,756 INFO L138 BoogieDeclarations]: Found implementation of procedure __VERIFIER_assert [2018-11-23 12:33:55,757 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.dealloc [2018-11-23 12:33:55,757 INFO L130 BoogieDeclarations]: Found specification of procedure sqrt_custom [2018-11-23 12:33:55,757 INFO L138 BoogieDeclarations]: Found implementation of procedure sqrt_custom [2018-11-23 12:33:55,893 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 12:33:55,893 INFO L280 CfgBuilder]: Removed 0 assue(true) statements. [2018-11-23 12:33:55,893 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:33:55 BoogieIcfgContainer [2018-11-23 12:33:55,894 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 12:33:55,894 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 12:33:55,894 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 12:33:55,896 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 12:33:55,897 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 12:33:55" (1/3) ... [2018-11-23 12:33:55,897 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@657ee2e4 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 12:33:55, skipping insertion in model container [2018-11-23 12:33:55,897 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:55" (2/3) ... [2018-11-23 12:33:55,898 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@657ee2e4 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 12:33:55, skipping insertion in model container [2018-11-23 12:33:55,898 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:33:55" (3/3) ... [2018-11-23 12:33:55,899 INFO L112 eAbstractionObserver]: Analyzing ICFG sqrt_poly2_false-unreach-call.c [2018-11-23 12:33:55,907 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 12:33:55,912 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 12:33:55,924 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 12:33:55,949 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 12:33:55,950 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 12:33:55,950 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 12:33:55,950 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 12:33:55,950 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 12:33:55,950 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 12:33:55,950 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 12:33:55,950 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 12:33:55,961 INFO L276 IsEmpty]: Start isEmpty. Operand 25 states. [2018-11-23 12:33:55,965 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 18 [2018-11-23 12:33:55,965 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 12:33:55,966 INFO L402 BasicCegarLoop]: trace histogram [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 12:33:55,967 INFO L423 AbstractCegarLoop]: === Iteration 1 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 12:33:55,971 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 12:33:55,971 INFO L82 PathProgramCache]: Analyzing trace with hash 230068877, now seen corresponding path program 1 times [2018-11-23 12:33:55,972 INFO L69 tionRefinementEngine]: Using refinement strategy TaipanRefinementStrategy [2018-11-23 12:33:56,000 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 12:33:56,000 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 12:33:56,000 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 12:33:56,001 INFO L286 anRefinementStrategy]: Using traceCheck mode SMTINTERPOL with AssertCodeBlockOrder NOT_INCREMENTALLY (IT: Craig_TreeInterpolation) [2018-11-23 12:33:56,064 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 12:33:56,091 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 12:33:56,113 INFO L469 BasicCegarLoop]: Counterexample might be feasible ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); VAL [|#NULL.base|=14, |#NULL.offset|=9, |old(#NULL.base)|=14, |old(#NULL.offset)|=9, |old(~C0~0)|=13.0, |old(~C1~0)|=28.0, |old(~C2~0)|=16.0, |old(~C3~0)|=31.0, |old(~C4~0)|=15.0, |old(~C5~0)|=25.0, ~C0~0=13.0, ~C1~0=28.0, ~C2~0=16.0, ~C3~0=31.0, ~C4~0=15.0, ~C5~0=25.0] [?] #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0];~C0~0 := 1.414213538;~C1~0 := 0.229761391;~C2~0 := 1.296735525;~C3~0 := ~someUnaryDOUBLEoperation(0.90109837);~C4~0 := 0.4935534;~C5~0 := ~someUnaryDOUBLEoperation(0.118958666); VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=14, |old(#NULL.offset)|=9, |old(~C0~0)|=13.0, |old(~C1~0)|=28.0, |old(~C2~0)|=16.0, |old(~C3~0)|=31.0, |old(~C4~0)|=15.0, |old(~C5~0)|=25.0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=14, |old(#NULL.offset)|=9, |old(~C0~0)|=13.0, |old(~C1~0)|=28.0, |old(~C2~0)|=16.0, |old(~C3~0)|=31.0, |old(~C4~0)|=15.0, |old(~C5~0)|=25.0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] RET #32#return; VAL [|#NULL.base|=0, |#NULL.offset|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] CALL call #t~ret10 := main(); VAL [|#NULL.base|=0, |#NULL.offset|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] havoc ~x~1;havoc ~y~0;~x~1 := #t~nondet8;havoc #t~nondet8;assume 0 != (if ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0) && ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0E10) then 1 else 0); VAL [main_~x~1=12.0, |#NULL.base|=0, |#NULL.offset|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [|#NULL.base|=0, |#NULL.offset|=0, |sqrt_custom_#in~a|=12.0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] ~a := #in~a;call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8);havoc ~r~0;havoc ~exp~0;call write~real(~a, ~#x~0.base, ~#x~0.offset, 8);call #t~mem0 := read~int(~#x~0.base, ~#x~0.offset, 4);~exp~0 := ~bitwiseAnd(#t~mem0, 2146435072) / 1048576;call write~real(#t~union1, ~#x~0.base, ~#x~0.offset, 8);havoc #t~mem0;havoc #t~union1;call #t~mem2 := read~int(~#x~0.base, ~#x~0.offset, 4);call write~int((if ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 <= 2147483647 then ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 else ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 - 4294967296), ~#x~0.base, ~#x~0.offset, 4);havoc #t~mem2;call #t~mem3 := read~real(~#x~0.base, ~#x~0.offset, 8);~r~0 := ~someBinaryArithmeticDOUBLEoperation(#t~mem3, 0.5);call write~int(#t~union4[0], ~#x~0.base, ~#x~0.offset, 4);call write~int(#t~union4[1], ~#x~0.base, 4 + ~#x~0.offset, 4);havoc #t~mem3;havoc #t~union4;~r~0 := ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C1~0, ~C2~0), ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C3~0, ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C4~0, ~someBinaryArithmeticDOUBLEoperation(~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [sqrt_custom_~a=12.0, sqrt_custom_~exp~0=(- 4), |#NULL.base|=0, |#NULL.offset|=0, |sqrt_custom_#in~a|=12.0, |sqrt_custom_~#x~0.base|=24, |sqrt_custom_~#x~0.offset|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] assume 0 == (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then ~exp~0 % 2 - 2 else ~exp~0 % 2);#t~post5 := ~exp~0;~exp~0 := 1 + #t~post5;havoc #t~post5; VAL [sqrt_custom_~a=12.0, sqrt_custom_~exp~0=(- 3), |#NULL.base|=0, |#NULL.offset|=0, |sqrt_custom_#in~a|=12.0, |sqrt_custom_~#x~0.base|=24, |sqrt_custom_~#x~0.offset|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] call write~int(1048576 * (511 + (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then 1 + ~exp~0 / 2 else ~exp~0 / 2)), ~#x~0.base, ~#x~0.offset, 4);call #t~mem6 := read~real(~#x~0.base, ~#x~0.offset, 8);~r~0 := ~someBinaryArithmeticDOUBLEoperation(~r~0, #t~mem6);call write~int(#t~union7[0], ~#x~0.base, ~#x~0.offset, 4);call write~int(#t~union7[1], ~#x~0.base, 4 + ~#x~0.offset, 4);havoc #t~mem6;havoc #t~union7;#res := ~r~0;call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset);havoc ~#x~0.base, ~#x~0.offset; VAL [sqrt_custom_~a=12.0, sqrt_custom_~exp~0=(- 3), sqrt_custom_~r~0=27.0, |#NULL.base|=0, |#NULL.offset|=0, |sqrt_custom_#in~a|=12.0, |sqrt_custom_#res|=27.0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] assume true; VAL [sqrt_custom_~a=12.0, sqrt_custom_~exp~0=(- 3), sqrt_custom_~r~0=27.0, |#NULL.base|=0, |#NULL.offset|=0, |sqrt_custom_#in~a|=12.0, |sqrt_custom_#res|=27.0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] RET #36#return; VAL [main_~x~1=12.0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret9|=27.0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] ~y~0 := #t~ret9;havoc #t~ret9; VAL [main_~x~1=12.0, main_~y~0=27.0, |#NULL.base|=0, |#NULL.offset|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] CALL call __VERIFIER_assert((if ~someBinaryDOUBLEComparisonOperation(~y~0, 0.0) && ~someBinaryDOUBLEComparisonOperation(~y~0, 1000000.0) then 1 else 0)); VAL [|#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] ~cond := #in~cond; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] assume 0 == ~cond; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] assume !false; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0, ~C0~0=(/ 707106769.0 500000000.0), ~C1~0=(/ 229761391.0 1000000000.0), ~C2~0=(/ 51869421.0 40000000.0), ~C4~0=(/ 2467767.0 5000000.0)] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=14, #NULL.offset=9, old(#NULL.base)=14, old(#NULL.offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=13.0, ~C1~0=28.0, ~C2~0=16.0, ~C3~0=31.0, ~C4~0=15.0, ~C5~0=25.0] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; [L12] ~C0~0 := 1.414213538; [L13] ~C1~0 := 0.229761391; [L14] ~C2~0 := 1.296735525; [L15] ~C3~0 := ~someUnaryDOUBLEoperation(0.90109837); [L16] ~C4~0 := 0.4935534; [L17] ~C5~0 := ~someUnaryDOUBLEoperation(0.118958666); VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=14, old(#NULL.offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=14, old(#NULL.offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] CALL call #t~ret10 := main(); VAL [#NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0 != (if ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0) && ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0E10) then 1 else 0); VAL [#NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L24-L49] ~a := #in~a; [L26] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] call write~real(~a, ~#x~0.base, ~#x~0.offset, 8); [L32] call #t~mem0 := read~int(~#x~0.base, ~#x~0.offset, 4); [L32] ~exp~0 := ~bitwiseAnd(#t~mem0, 2146435072) / 1048576; [L32] call write~real(#t~union1, ~#x~0.base, ~#x~0.offset, 8); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] call #t~mem2 := read~int(~#x~0.base, ~#x~0.offset, 4); [L33] call write~int((if ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 <= 2147483647 then ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 else ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 - 4294967296), ~#x~0.base, ~#x~0.offset, 4); [L33] havoc #t~mem2; [L34] call #t~mem3 := read~real(~#x~0.base, ~#x~0.offset, 8); [L34] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(#t~mem3, 0.5); [L34] call write~int(#t~union4[0], ~#x~0.base, ~#x~0.offset, 4); [L34] call write~int(#t~union4[1], ~#x~0.base, 4 + ~#x~0.offset, 4); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C1~0, ~C2~0), ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C3~0, ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C4~0, ~someBinaryArithmeticDOUBLEoperation(~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, ~#x~0.base=24, ~#x~0.offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-4] [L38-L43] assume 0 == (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then ~exp~0 % 2 - 2 else ~exp~0 % 2); [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := 1 + #t~post5; [L39] havoc #t~post5; VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, ~#x~0.base=24, ~#x~0.offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3] [L45] call write~int(1048576 * (511 + (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then 1 + ~exp~0 / 2 else ~exp~0 / 2)), ~#x~0.base, ~#x~0.offset, 4); [L46] call #t~mem6 := read~real(~#x~0.base, ~#x~0.offset, 8); [L46] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~r~0, #t~mem6); [L46] call write~int(#t~union7[0], ~#x~0.base, ~#x~0.offset, 4); [L46] call write~int(#t~union7[1], ~#x~0.base, 4 + ~#x~0.offset, 4); [L46] havoc #t~mem6; [L46] havoc #t~union7; [L48] #res := ~r~0; [L26] call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset); [L48] havoc ~#x~0.base, ~#x~0.offset; VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, #res=27.0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3, ~r~0=27.0] [L24-L49] ensures true; VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, #res=27.0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3, ~r~0=27.0] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL.base=0, #NULL.offset=0, #t~ret9=27.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0, ~y~0=27.0] [L60] CALL call __VERIFIER_assert((if ~someBinaryDOUBLEComparisonOperation(~y~0, 0.0) && ~someBinaryDOUBLEComparisonOperation(~y~0, 1000000.0) then 1 else 0)); VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L9] ~cond := #in~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] assume 0 == ~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] assert false; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=14, #NULL.offset=9, old(#NULL.base)=14, old(#NULL.offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=13.0, ~C1~0=28.0, ~C2~0=16.0, ~C3~0=31.0, ~C4~0=15.0, ~C5~0=25.0] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; [L12] ~C0~0 := 1.414213538; [L13] ~C1~0 := 0.229761391; [L14] ~C2~0 := 1.296735525; [L15] ~C3~0 := ~someUnaryDOUBLEoperation(0.90109837); [L16] ~C4~0 := 0.4935534; [L17] ~C5~0 := ~someUnaryDOUBLEoperation(0.118958666); VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=14, old(#NULL.offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=14, old(#NULL.offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] CALL call #t~ret10 := main(); VAL [#NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0 != (if ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0) && ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0E10) then 1 else 0); VAL [#NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L24-L49] ~a := #in~a; [L26] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] call write~real(~a, ~#x~0.base, ~#x~0.offset, 8); [L32] call #t~mem0 := read~int(~#x~0.base, ~#x~0.offset, 4); [L32] ~exp~0 := ~bitwiseAnd(#t~mem0, 2146435072) / 1048576; [L32] call write~real(#t~union1, ~#x~0.base, ~#x~0.offset, 8); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] call #t~mem2 := read~int(~#x~0.base, ~#x~0.offset, 4); [L33] call write~int((if ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 <= 2147483647 then ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 else ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 - 4294967296), ~#x~0.base, ~#x~0.offset, 4); [L33] havoc #t~mem2; [L34] call #t~mem3 := read~real(~#x~0.base, ~#x~0.offset, 8); [L34] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(#t~mem3, 0.5); [L34] call write~int(#t~union4[0], ~#x~0.base, ~#x~0.offset, 4); [L34] call write~int(#t~union4[1], ~#x~0.base, 4 + ~#x~0.offset, 4); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C1~0, ~C2~0), ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C3~0, ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C4~0, ~someBinaryArithmeticDOUBLEoperation(~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, ~#x~0.base=24, ~#x~0.offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-4] [L38-L43] assume 0 == (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then ~exp~0 % 2 - 2 else ~exp~0 % 2); [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := 1 + #t~post5; [L39] havoc #t~post5; VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, ~#x~0.base=24, ~#x~0.offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3] [L45] call write~int(1048576 * (511 + (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then 1 + ~exp~0 / 2 else ~exp~0 / 2)), ~#x~0.base, ~#x~0.offset, 4); [L46] call #t~mem6 := read~real(~#x~0.base, ~#x~0.offset, 8); [L46] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~r~0, #t~mem6); [L46] call write~int(#t~union7[0], ~#x~0.base, ~#x~0.offset, 4); [L46] call write~int(#t~union7[1], ~#x~0.base, 4 + ~#x~0.offset, 4); [L46] havoc #t~mem6; [L46] havoc #t~union7; [L48] #res := ~r~0; [L26] call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset); [L48] havoc ~#x~0.base, ~#x~0.offset; VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, #res=27.0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3, ~r~0=27.0] [L24-L49] ensures true; VAL [#in~a=12.0, #NULL.base=0, #NULL.offset=0, #res=27.0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3, ~r~0=27.0] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL.base=0, #NULL.offset=0, #t~ret9=27.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0, ~y~0=27.0] [L60] CALL call __VERIFIER_assert((if ~someBinaryDOUBLEComparisonOperation(~y~0, 0.0) && ~someBinaryDOUBLEComparisonOperation(~y~0, 1000000.0) then 1 else 0)); VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L9] ~cond := #in~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] assume 0 == ~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] assert false; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=14, #NULL!offset=9, old(#NULL!base)=14, old(#NULL!offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=13.0, ~C1~0=28.0, ~C2~0=16.0, ~C3~0=31.0, ~C4~0=15.0, ~C5~0=25.0] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L12] ~C0~0 := 1.414213538; [L13] ~C1~0 := 0.229761391; [L14] ~C2~0 := 1.296735525; [L15] ~C3~0 := ~someUnaryDOUBLEoperation(0.90109837); [L16] ~C4~0 := 0.4935534; [L17] ~C5~0 := ~someUnaryDOUBLEoperation(0.118958666); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=14, old(#NULL!offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0 != (if ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0) && ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0E10) then 1 else 0); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~real(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L32] FCALL call #t~mem0 := read~int({ base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L32] ~exp~0 := ~bitwiseAnd(#t~mem0, 2146435072) / 1048576; [L32] FCALL call write~real(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~int({ base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L33] FCALL call write~int((if ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 <= 2147483647 then ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 else ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 - 4294967296), { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~real({ base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L34] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(#t~mem3, 0.5); [L34] FCALL call write~int(#t~union4[0], { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L34] FCALL call write~int(#t~union4[1], { base: ~#x~0!base, offset: 4 + ~#x~0!offset }, 4); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C1~0, ~C2~0), ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C3~0, ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C4~0, ~someBinaryArithmeticDOUBLEoperation(~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~#x~0!base=24, ~#x~0!offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-4] [L38] COND TRUE 0 == (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then ~exp~0 % 2 - 2 else ~exp~0 % 2) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := 1 + #t~post5; [L39] havoc #t~post5; VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~#x~0!base=24, ~#x~0!offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3] [L45] FCALL call write~int(1048576 * (511 + (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then 1 + ~exp~0 / 2 else ~exp~0 / 2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L46] FCALL call #t~mem6 := read~real({ base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L46] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~r~0, #t~mem6); [L46] FCALL call write~int(#t~union7[0], { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L46] FCALL call write~int(#t~union7[1], { base: ~#x~0!base, offset: 4 + ~#x~0!offset }, 4); [L46] havoc #t~mem6; [L46] havoc #t~union7; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, #res=27.0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3, ~r~0=27.0] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0, #NULL!offset=0, #t~ret9=27.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0, ~y~0=27.0] [L60] CALL call __VERIFIER_assert((if ~someBinaryDOUBLEComparisonOperation(~y~0, 0.0) && ~someBinaryDOUBLEComparisonOperation(~y~0, 1000000.0) then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L9] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=14, #NULL!offset=9, old(#NULL!base)=14, old(#NULL!offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=13.0, ~C1~0=28.0, ~C2~0=16.0, ~C3~0=31.0, ~C4~0=15.0, ~C5~0=25.0] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L12] ~C0~0 := 1.414213538; [L13] ~C1~0 := 0.229761391; [L14] ~C2~0 := 1.296735525; [L15] ~C3~0 := ~someUnaryDOUBLEoperation(0.90109837); [L16] ~C4~0 := 0.4935534; [L17] ~C5~0 := ~someUnaryDOUBLEoperation(0.118958666); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=14, old(#NULL!offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0 != (if ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0) && ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0E10) then 1 else 0); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~real(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L32] FCALL call #t~mem0 := read~int({ base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L32] ~exp~0 := ~bitwiseAnd(#t~mem0, 2146435072) / 1048576; [L32] FCALL call write~real(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~int({ base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L33] FCALL call write~int((if ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 <= 2147483647 then ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 else ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 - 4294967296), { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~real({ base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L34] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(#t~mem3, 0.5); [L34] FCALL call write~int(#t~union4[0], { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L34] FCALL call write~int(#t~union4[1], { base: ~#x~0!base, offset: 4 + ~#x~0!offset }, 4); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C1~0, ~C2~0), ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C3~0, ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C4~0, ~someBinaryArithmeticDOUBLEoperation(~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~#x~0!base=24, ~#x~0!offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-4] [L38] COND TRUE 0 == (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then ~exp~0 % 2 - 2 else ~exp~0 % 2) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := 1 + #t~post5; [L39] havoc #t~post5; VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~#x~0!base=24, ~#x~0!offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3] [L45] FCALL call write~int(1048576 * (511 + (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then 1 + ~exp~0 / 2 else ~exp~0 / 2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L46] FCALL call #t~mem6 := read~real({ base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L46] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~r~0, #t~mem6); [L46] FCALL call write~int(#t~union7[0], { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L46] FCALL call write~int(#t~union7[1], { base: ~#x~0!base, offset: 4 + ~#x~0!offset }, 4); [L46] havoc #t~mem6; [L46] havoc #t~union7; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, #res=27.0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3, ~r~0=27.0] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0, #NULL!offset=0, #t~ret9=27.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0, ~y~0=27.0] [L60] CALL call __VERIFIER_assert((if ~someBinaryDOUBLEComparisonOperation(~y~0, 0.0) && ~someBinaryDOUBLEComparisonOperation(~y~0, 1000000.0) then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L9] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=14, #NULL!offset=9, old(#NULL!base)=14, old(#NULL!offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=13.0, ~C1~0=28.0, ~C2~0=16.0, ~C3~0=31.0, ~C4~0=15.0, ~C5~0=25.0] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L12] ~C0~0 := 1.414213538; [L13] ~C1~0 := 0.229761391; [L14] ~C2~0 := 1.296735525; [L15] ~C3~0 := ~someUnaryDOUBLEoperation(0.90109837); [L16] ~C4~0 := 0.4935534; [L17] ~C5~0 := ~someUnaryDOUBLEoperation(0.118958666); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=14, old(#NULL!offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0 != (if ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0) && ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0E10) then 1 else 0); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~real(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L32] FCALL call #t~mem0 := read~int({ base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L32] ~exp~0 := ~bitwiseAnd(#t~mem0, 2146435072) / 1048576; [L32] FCALL call write~real(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~int({ base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L33] FCALL call write~int((if ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 <= 2147483647 then ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 else ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 - 4294967296), { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~real({ base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L34] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(#t~mem3, 0.5); [L34] FCALL call write~int(#t~union4[0], { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L34] FCALL call write~int(#t~union4[1], { base: ~#x~0!base, offset: 4 + ~#x~0!offset }, 4); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C1~0, ~C2~0), ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C3~0, ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C4~0, ~someBinaryArithmeticDOUBLEoperation(~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~#x~0!base=24, ~#x~0!offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-4] [L38] COND TRUE 0 == (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then ~exp~0 % 2 - 2 else ~exp~0 % 2) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := 1 + #t~post5; [L39] havoc #t~post5; VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~#x~0!base=24, ~#x~0!offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3] [L45] FCALL call write~int(1048576 * (511 + (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then 1 + ~exp~0 / 2 else ~exp~0 / 2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L46] FCALL call #t~mem6 := read~real({ base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L46] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~r~0, #t~mem6); [L46] FCALL call write~int(#t~union7[0], { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L46] FCALL call write~int(#t~union7[1], { base: ~#x~0!base, offset: 4 + ~#x~0!offset }, 4); [L46] havoc #t~mem6; [L46] havoc #t~union7; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, #res=27.0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3, ~r~0=27.0] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0, #NULL!offset=0, #t~ret9=27.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0, ~y~0=27.0] [L60] CALL call __VERIFIER_assert((if ~someBinaryDOUBLEComparisonOperation(~y~0, 0.0) && ~someBinaryDOUBLEComparisonOperation(~y~0, 1000000.0) then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L9] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=14, #NULL!offset=9, old(#NULL!base)=14, old(#NULL!offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=13.0, ~C1~0=28.0, ~C2~0=16.0, ~C3~0=31.0, ~C4~0=15.0, ~C5~0=25.0] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L12] ~C0~0 := 1.414213538; [L13] ~C1~0 := 0.229761391; [L14] ~C2~0 := 1.296735525; [L15] ~C3~0 := ~someUnaryDOUBLEoperation(0.90109837); [L16] ~C4~0 := 0.4935534; [L17] ~C5~0 := ~someUnaryDOUBLEoperation(0.118958666); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=14, old(#NULL!offset)=9, old(~C0~0)=13.0, old(~C1~0)=28.0, old(~C2~0)=16.0, old(~C3~0)=31.0, old(~C4~0)=15.0, old(~C5~0)=25.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0 != (if ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0) && ~someBinaryDOUBLEComparisonOperation(~x~1, 1.0E10) then 1 else 0); VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~real(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L32] FCALL call #t~mem0 := read~int({ base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L32] ~exp~0 := ~bitwiseAnd(#t~mem0, 2146435072) / 1048576; [L32] FCALL call write~real(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~int({ base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L33] FCALL call write~int((if ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 <= 2147483647 then ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 else ~bitwiseOr(~bitwiseAnd(#t~mem2, 2148532223), 1072693248) % 4294967296 % 4294967296 - 4294967296), { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~real({ base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L34] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(#t~mem3, 0.5); [L34] FCALL call write~int(#t~union4[0], { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L34] FCALL call write~int(#t~union4[1], { base: ~#x~0!base, offset: 4 + ~#x~0!offset }, 4); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C1~0, ~C2~0), ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C3~0, ~someBinaryArithmeticDOUBLEoperation(~someBinaryArithmeticDOUBLEoperation(~C4~0, ~someBinaryArithmeticDOUBLEoperation(~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~#x~0!base=24, ~#x~0!offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-4] [L38] COND TRUE 0 == (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then ~exp~0 % 2 - 2 else ~exp~0 % 2) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := 1 + #t~post5; [L39] havoc #t~post5; VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, ~#x~0!base=24, ~#x~0!offset=0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3] [L45] FCALL call write~int(1048576 * (511 + (if ~exp~0 < 0 && 0 != ~exp~0 % 2 then 1 + ~exp~0 / 2 else ~exp~0 / 2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L46] FCALL call #t~mem6 := read~real({ base: ~#x~0!base, offset: ~#x~0!offset }, 8); [L46] ~r~0 := ~someBinaryArithmeticDOUBLEoperation(~r~0, #t~mem6); [L46] FCALL call write~int(#t~union7[0], { base: ~#x~0!base, offset: ~#x~0!offset }, 4); [L46] FCALL call write~int(#t~union7[1], { base: ~#x~0!base, offset: 4 + ~#x~0!offset }, 4); [L46] havoc #t~mem6; [L46] havoc #t~union7; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=12.0, #NULL!base=0, #NULL!offset=0, #res=27.0, ~a=12.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~exp~0=-3, ~r~0=27.0] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0, #NULL!offset=0, #t~ret9=27.0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~x~1=12.0, ~y~0=27.0] [L60] CALL call __VERIFIER_assert((if ~someBinaryDOUBLEComparisonOperation(~y~0, 0.0) && ~someBinaryDOUBLEComparisonOperation(~y~0, 1000000.0) then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000] [L9] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L9] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~C0~0=707106769/500000000, ~C1~0=229761391/1000000000, ~C2~0=51869421/40000000, ~C4~0=2467767/5000000, ~cond=0] [L12] double C0 = 1.414213538; [L13] double C1 = 0.229761391; [L14] double C2 = 1.296735525; [L15] double C3 = -0.901098370; [L16] double C4 = 0.493553400; [L17] double C5 = -0.118958666; VAL [\old(C0)=13, \old(C1)=28, \old(C2)=16, \old(C3)=31, \old(C4)=15, \old(C5)=25, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000] [L53] double x,y; [L55] x = __VERIFIER_nondet_double() [L58] CALL, EXPR sqrt_custom(x) VAL [\old(a)=12, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000] [L26] union u x; [L27] double r; [L28] int exp; [L30] x.d = a [L32] EXPR x.i[0] [L32] exp = (x.i[0] & 0x7FF00000) >> 20 [L33] EXPR x.i[0] [L33] x.i[0] = (x.i[0] & 0x800FFFFF) | 0x3FF00000 [L34] EXPR x.d [L34] r = x.d * 0.5 [L36] r = C1+C2+(C3+(C4+C5*r)*r)*r VAL [\old(a)=12, a=12, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, exp=-4, x={24:0}] [L38] COND TRUE exp % 2 == 0 [L39] exp++ VAL [\old(a)=12, a=12, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, exp=-3, x={24:0}] [L45] x.i[0] = (exp/2 + 511) << 20 [L46] EXPR x.d [L46] r = r * x.d [L48] return r; [L48] return r; VAL [\old(a)=12, \result=27, a=12, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, exp=-3, r=27] [L58] RET, EXPR sqrt_custom(x) VAL [C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, sqrt_custom(x)=27, x=12] [L58] y = sqrt_custom(x) [L60] CALL __VERIFIER_assert(y >= 0. && y <= 1e6) VAL [\old(cond)=0, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000] [L9] COND TRUE !(cond) VAL [\old(cond)=0, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, cond=0] [L9] __VERIFIER_error() VAL [\old(cond)=0, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, cond=0] ----- [2018-11-23 12:33:56,158 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction CFG 23.11 12:33:56 BoogieIcfgContainer [2018-11-23 12:33:56,158 INFO L132 PluginConnector]: ------------------------ END TraceAbstraction---------------------------- [2018-11-23 12:33:56,158 INFO L113 PluginConnector]: ------------------------Witness Printer---------------------------- [2018-11-23 12:33:56,158 INFO L271 PluginConnector]: Initializing Witness Printer... [2018-11-23 12:33:56,159 INFO L276 PluginConnector]: Witness Printer initialized [2018-11-23 12:33:56,159 INFO L185 PluginConnector]: Executing the observer RCFGCatcher from plugin Witness Printer for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:33:55" (3/4) ... [2018-11-23 12:33:56,161 INFO L147 WitnessPrinter]: No result that supports witness generation found [2018-11-23 12:33:56,162 INFO L132 PluginConnector]: ------------------------ END Witness Printer---------------------------- [2018-11-23 12:33:56,162 INFO L168 Benchmark]: Toolchain (without parser) took 687.36 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 122.7 MB). Free memory was 959.1 MB in the beginning and 1.1 GB in the end (delta: -106.8 MB). Peak memory consumption was 15.9 MB. Max. memory is 11.5 GB. [2018-11-23 12:33:56,165 INFO L168 Benchmark]: CDTParser took 0.12 ms. Allocated memory is still 1.0 GB. Free memory is still 985.4 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:33:56,166 INFO L168 Benchmark]: CACSL2BoogieTranslator took 171.88 ms. Allocated memory is still 1.0 GB. Free memory was 959.1 MB in the beginning and 945.7 MB in the end (delta: 13.4 MB). Peak memory consumption was 13.4 MB. Max. memory is 11.5 GB. [2018-11-23 12:33:56,166 INFO L168 Benchmark]: Boogie Procedure Inliner took 14.41 ms. Allocated memory is still 1.0 GB. Free memory is still 945.7 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:33:56,166 INFO L168 Benchmark]: Boogie Preprocessor took 57.10 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 122.7 MB). Free memory was 945.7 MB in the beginning and 1.1 GB in the end (delta: -171.7 MB). Peak memory consumption was 14.5 MB. Max. memory is 11.5 GB. [2018-11-23 12:33:56,167 INFO L168 Benchmark]: RCFGBuilder took 173.94 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 17.9 MB). Peak memory consumption was 17.9 MB. Max. memory is 11.5 GB. [2018-11-23 12:33:56,168 INFO L168 Benchmark]: TraceAbstraction took 263.87 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 33.6 MB). Peak memory consumption was 33.6 MB. Max. memory is 11.5 GB. [2018-11-23 12:33:56,168 INFO L168 Benchmark]: Witness Printer took 3.30 ms. Allocated memory is still 1.2 GB. Free memory is still 1.1 GB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:33:56,171 INFO L336 ainManager$Toolchain]: ####################### End [Toolchain 1] ####################### --- Results --- * Results from de.uni_freiburg.informatik.ultimate.core: - StatisticsResult: Toolchain Benchmarks Benchmark results are: * CDTParser took 0.12 ms. Allocated memory is still 1.0 GB. Free memory is still 985.4 MB. There was no memory consumed. Max. memory is 11.5 GB. * CACSL2BoogieTranslator took 171.88 ms. Allocated memory is still 1.0 GB. Free memory was 959.1 MB in the beginning and 945.7 MB in the end (delta: 13.4 MB). Peak memory consumption was 13.4 MB. Max. memory is 11.5 GB. * Boogie Procedure Inliner took 14.41 ms. Allocated memory is still 1.0 GB. Free memory is still 945.7 MB. There was no memory consumed. Max. memory is 11.5 GB. * Boogie Preprocessor took 57.10 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 122.7 MB). Free memory was 945.7 MB in the beginning and 1.1 GB in the end (delta: -171.7 MB). Peak memory consumption was 14.5 MB. Max. memory is 11.5 GB. * RCFGBuilder took 173.94 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 17.9 MB). Peak memory consumption was 17.9 MB. Max. memory is 11.5 GB. * TraceAbstraction took 263.87 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 33.6 MB). Peak memory consumption was 33.6 MB. Max. memory is 11.5 GB. * Witness Printer took 3.30 ms. Allocated memory is still 1.2 GB. Free memory is still 1.1 GB. There was no memory consumed. Max. memory is 11.5 GB. * Results from de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction: - UnprovableResult [Line: 9]: Unable to prove that call of __VERIFIER_error() unreachable Unable to prove that call of __VERIFIER_error() unreachable Reason: overapproximation of bitwiseOr at line 33, overapproximation of someUnaryDOUBLEoperation at line 15, overapproximation of someBinaryArithmeticDOUBLEoperation at line 46, overapproximation of bitwiseAnd at line 32, overapproximation of someBinaryDOUBLEComparisonOperation at line 56. Possible FailurePath: [L12] double C0 = 1.414213538; [L13] double C1 = 0.229761391; [L14] double C2 = 1.296735525; [L15] double C3 = -0.901098370; [L16] double C4 = 0.493553400; [L17] double C5 = -0.118958666; VAL [\old(C0)=13, \old(C1)=28, \old(C2)=16, \old(C3)=31, \old(C4)=15, \old(C5)=25, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000] [L53] double x,y; [L55] x = __VERIFIER_nondet_double() [L58] CALL, EXPR sqrt_custom(x) VAL [\old(a)=12, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000] [L26] union u x; [L27] double r; [L28] int exp; [L30] x.d = a [L32] EXPR x.i[0] [L32] exp = (x.i[0] & 0x7FF00000) >> 20 [L33] EXPR x.i[0] [L33] x.i[0] = (x.i[0] & 0x800FFFFF) | 0x3FF00000 [L34] EXPR x.d [L34] r = x.d * 0.5 [L36] r = C1+C2+(C3+(C4+C5*r)*r)*r VAL [\old(a)=12, a=12, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, exp=-4, x={24:0}] [L38] COND TRUE exp % 2 == 0 [L39] exp++ VAL [\old(a)=12, a=12, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, exp=-3, x={24:0}] [L45] x.i[0] = (exp/2 + 511) << 20 [L46] EXPR x.d [L46] r = r * x.d [L48] return r; [L48] return r; VAL [\old(a)=12, \result=27, a=12, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, exp=-3, r=27] [L58] RET, EXPR sqrt_custom(x) VAL [C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, sqrt_custom(x)=27, x=12] [L58] y = sqrt_custom(x) [L60] CALL __VERIFIER_assert(y >= 0. && y <= 1e6) VAL [\old(cond)=0, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000] [L9] COND TRUE !(cond) VAL [\old(cond)=0, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, cond=0] [L9] __VERIFIER_error() VAL [\old(cond)=0, C0=707106769/500000000, C1=229761391/1000000000, C2=51869421/40000000, C4=2467767/5000000, cond=0] - StatisticsResult: Ultimate Automizer benchmark data CFG has 5 procedures, 25 locations, 1 error locations. UNSAFE Result, 0.2s OverallTime, 1 OverallIterations, 1 TraceHistogramMax, 0.0s AutomataDifference, 0.0s DeadEndRemovalTime, 0.0s HoareAnnotationTime, HoareTripleCheckerStatistics: No data available, PredicateUnifierStatistics: No data available, 0.0s BasicInterpolantAutomatonTime, BiggestAbstraction: size=25occurred in iteration=0, traceCheckStatistics: No data available, InterpolantConsolidationStatistics: No data available, PathInvariantsStatistics: No data available, 0/0 InterpolantCoveringCapability, TotalInterpolationStatistics: No data available, 0.0s AbstIntTime, 0 AbstIntIterations, 0 AbstIntStrong, NaN AbsIntWeakeningRatio, NaN AbsIntAvgWeakeningVarsNumRemoved, NaN AbsIntAvgWeakenedConjuncts, 0.0s DumpTime, AutomataMinimizationStatistics: No data available, HoareAnnotationStatistics: No data available, RefinementEngineStatistics: TraceCheckStatistics: 0.0s SsaConstructionTime, 0.0s SatisfiabilityAnalysisTime, 0.0s InterpolantComputationTime, 17 NumberOfCodeBlocks, 17 NumberOfCodeBlocksAsserted, 1 NumberOfCheckSat, 0 ConstructedInterpolants, 0 QuantifiedInterpolants, 0 SizeOfPredicates, 0 NumberOfNonLiveVariables, 0 ConjunctsInSsa, 0 ConjunctsInUnsatCore, 0 InterpolantComputations, 0 PerfectInterpolantSequences, 0/0 InterpolantCoveringCapability, InvariantSynthesisStatistics: No data available, InterpolantConsolidationStatistics: No data available, ReuseStatistics: No data available RESULT: Ultimate could not prove your program: unable to determine feasibility of some traces Received shutdown request... ### Bit-precise run ### This is Ultimate 0.1.23-aa41828 [2018-11-23 12:33:57,543 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 12:33:57,544 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 12:33:57,552 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 12:33:57,552 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 12:33:57,553 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 12:33:57,553 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 12:33:57,555 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 12:33:57,556 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 12:33:57,556 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 12:33:57,557 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 12:33:57,557 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 12:33:57,558 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 12:33:57,558 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 12:33:57,559 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 12:33:57,560 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 12:33:57,560 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 12:33:57,562 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 12:33:57,563 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 12:33:57,564 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 12:33:57,565 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 12:33:57,565 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 12:33:57,567 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 12:33:57,567 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 12:33:57,567 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 12:33:57,568 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 12:33:57,569 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 12:33:57,569 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 12:33:57,570 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 12:33:57,570 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 12:33:57,571 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 12:33:57,571 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 12:33:57,571 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 12:33:57,571 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 12:33:57,573 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 12:33:57,573 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 12:33:57,573 INFO L98 SettingsManager]: Beginning loading settings from /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/config/svcomp-Reach-32bit-Taipan_Bitvector.epf [2018-11-23 12:33:57,584 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 12:33:57,584 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 12:33:57,585 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 12:33:57,585 INFO L133 SettingsManager]: * ... calls to implemented procedures=ONLY_FOR_CONCURRENT_PROGRAMS [2018-11-23 12:33:57,585 INFO L133 SettingsManager]: * User list type=DISABLED [2018-11-23 12:33:57,585 INFO L131 SettingsManager]: Preferences of Abstract Interpretation differ from their defaults: [2018-11-23 12:33:57,586 INFO L133 SettingsManager]: * Explicit value domain=true [2018-11-23 12:33:57,586 INFO L133 SettingsManager]: * Octagon Domain=false [2018-11-23 12:33:57,586 INFO L133 SettingsManager]: * Abstract domain=CompoundDomain [2018-11-23 12:33:57,586 INFO L133 SettingsManager]: * Interval Domain=false [2018-11-23 12:33:57,586 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 12:33:57,586 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 12:33:57,587 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 12:33:57,587 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 12:33:57,587 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 12:33:57,587 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 12:33:57,587 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 12:33:57,587 INFO L133 SettingsManager]: * Use bitvectors instead of ints=true [2018-11-23 12:33:57,587 INFO L133 SettingsManager]: * Memory model=HoenickeLindenmann_4ByteResolution [2018-11-23 12:33:57,587 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 12:33:57,588 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 12:33:57,589 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * Size of a code block=SequenceOfStatements [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * SMT solver=External_DefaultMode [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 12:33:57,589 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 12:33:57,589 INFO L133 SettingsManager]: * Trace refinement strategy=WALRUS [2018-11-23 12:33:57,590 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 12:33:57,590 INFO L133 SettingsManager]: * Command for external solver=cvc4nyu --tear-down-incremental --rewrite-divk --print-success --lang smt [2018-11-23 12:33:57,590 INFO L133 SettingsManager]: * Logic for external solver=AUFBV [2018-11-23 12:33:57,590 INFO L133 SettingsManager]: * Compute Hoare Annotation of negated interpolant automaton, abstraction and CFG=true Applying setting for plugin de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator: Entry function -> main Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Witness directory -> /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Witness filename -> witness.graphml Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Write witness besides input file -> false Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data specification -> CHECK( init(main()), LTL(G ! call(__VERIFIER_error())) ) Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data producer -> Taipan Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data architecture -> 32bit Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data programhash -> b63905375af38d9971341930078b6c47230c38fd [2018-11-23 12:33:57,617 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 12:33:57,625 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 12:33:57,627 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 12:33:57,628 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 12:33:57,628 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 12:33:57,629 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c [2018-11-23 12:33:57,663 INFO L221 CDTParser]: Created temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data/7ed9e4fe5/2b9d73b6b3a142b3a9b1fd23fb4966fc/FLAG71d836c33 [2018-11-23 12:33:58,056 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 12:33:58,057 INFO L161 CDTParser]: Scanning /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c [2018-11-23 12:33:58,060 INFO L355 CDTParser]: About to delete temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data/7ed9e4fe5/2b9d73b6b3a142b3a9b1fd23fb4966fc/FLAG71d836c33 [2018-11-23 12:33:58,068 INFO L363 CDTParser]: Successfully deleted /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/data/7ed9e4fe5/2b9d73b6b3a142b3a9b1fd23fb4966fc [2018-11-23 12:33:58,070 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 12:33:58,071 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 12:33:58,072 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 12:33:58,072 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 12:33:58,074 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 12:33:58,075 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,076 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@599dff01 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58, skipping insertion in model container [2018-11-23 12:33:58,076 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,083 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 12:33:58,098 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 12:33:58,233 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 12:33:58,239 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 12:33:58,260 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 12:33:58,279 INFO L195 MainTranslator]: Completed translation [2018-11-23 12:33:58,279 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58 WrapperNode [2018-11-23 12:33:58,279 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 12:33:58,280 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 12:33:58,280 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 12:33:58,280 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 12:33:58,285 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,292 INFO L185 PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,296 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 12:33:58,296 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 12:33:58,296 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 12:33:58,296 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 12:33:58,302 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,302 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,304 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,305 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,312 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,313 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,314 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... [2018-11-23 12:33:58,316 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 12:33:58,316 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 12:33:58,317 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 12:33:58,317 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 12:33:58,317 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (1/1) ... No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/z3 Starting monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 12:33:58,385 INFO L130 BoogieDeclarations]: Found specification of procedure read~intFLOATTYPE8 [2018-11-23 12:33:58,385 INFO L130 BoogieDeclarations]: Found specification of procedure write~intFLOATTYPE8 [2018-11-23 12:33:58,385 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 12:33:58,385 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 12:33:58,385 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 12:33:58,385 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 12:33:58,385 INFO L130 BoogieDeclarations]: Found specification of procedure #Ultimate.alloc [2018-11-23 12:33:58,386 INFO L130 BoogieDeclarations]: Found specification of procedure read~intINTTYPE4 [2018-11-23 12:33:58,386 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 12:33:58,386 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 12:33:58,386 INFO L130 BoogieDeclarations]: Found specification of procedure __VERIFIER_assert [2018-11-23 12:33:58,386 INFO L138 BoogieDeclarations]: Found implementation of procedure __VERIFIER_assert [2018-11-23 12:33:58,386 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.dealloc [2018-11-23 12:33:58,386 INFO L130 BoogieDeclarations]: Found specification of procedure write~intINTTYPE4 [2018-11-23 12:33:58,386 INFO L130 BoogieDeclarations]: Found specification of procedure sqrt_custom [2018-11-23 12:33:58,386 INFO L138 BoogieDeclarations]: Found implementation of procedure sqrt_custom [2018-11-23 12:34:00,611 WARN L317 ript$VariableManager]: TermVariabe |q#valueAsBitvector| not constructed by VariableManager. Cannot ensure absence of name clashes. [2018-11-23 12:34:01,278 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 12:34:01,279 INFO L280 CfgBuilder]: Removed 0 assue(true) statements. [2018-11-23 12:34:01,279 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:34:01 BoogieIcfgContainer [2018-11-23 12:34:01,279 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 12:34:01,279 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 12:34:01,280 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 12:34:01,281 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 12:34:01,281 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 12:33:58" (1/3) ... [2018-11-23 12:34:01,282 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@6921e32 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 12:34:01, skipping insertion in model container [2018-11-23 12:34:01,282 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:33:58" (2/3) ... [2018-11-23 12:34:01,282 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@6921e32 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 12:34:01, skipping insertion in model container [2018-11-23 12:34:01,282 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:34:01" (3/3) ... [2018-11-23 12:34:01,283 INFO L112 eAbstractionObserver]: Analyzing ICFG sqrt_poly2_false-unreach-call.c [2018-11-23 12:34:01,289 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 12:34:01,293 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 12:34:01,304 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 12:34:01,321 INFO L133 ementStrategyFactory]: Using default assertion order modulation [2018-11-23 12:34:01,321 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 12:34:01,321 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 12:34:01,321 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 12:34:01,322 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 12:34:01,322 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 12:34:01,322 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 12:34:01,322 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 12:34:01,322 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 12:34:01,331 INFO L276 IsEmpty]: Start isEmpty. Operand 25 states. [2018-11-23 12:34:01,334 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 18 [2018-11-23 12:34:01,334 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 12:34:01,335 INFO L402 BasicCegarLoop]: trace histogram [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 12:34:01,336 INFO L423 AbstractCegarLoop]: === Iteration 1 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 12:34:01,339 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 12:34:01,339 INFO L82 PathProgramCache]: Analyzing trace with hash 230068877, now seen corresponding path program 1 times [2018-11-23 12:34:01,342 INFO L223 ckRefinementStrategy]: Switched to mode MATHSAT_FPBP [2018-11-23 12:34:01,342 INFO L69 tionRefinementEngine]: Using refinement strategy WalrusRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/mathsat Starting monitored process 2 with mathsat -unsat_core_generation=3 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 2 with mathsat -unsat_core_generation=3 [2018-11-23 12:34:01,346 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 12:34:02,648 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 12:34:03,996 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 12:34:04,181 INFO L469 BasicCegarLoop]: Counterexample might be feasible ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); VAL [|#NULL.base|=(_ bv7 32), |#NULL.offset|=(_ bv5 32), |old(#NULL.base)|=(_ bv7 32), |old(#NULL.offset)|=(_ bv5 32), |old(~C0~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000111), |old(~C1~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000010), |old(~C2~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000011), |old(~C3~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000101), |old(~C4~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000110), |old(~C5~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000001), ~C0~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000111), ~C1~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000010), ~C2~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000011), ~C3~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000101), ~C4~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000110), ~C5~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000001)] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538);~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391);~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525);~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837));~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534);~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv7 32), |old(#NULL.offset)|=(_ bv5 32), |old(~C0~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000111), |old(~C1~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000010), |old(~C2~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000011), |old(~C3~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000101), |old(~C4~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000110), |old(~C5~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume true; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv7 32), |old(#NULL.offset)|=(_ bv5 32), |old(~C0~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000111), |old(~C1~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000010), |old(~C2~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000011), |old(~C3~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000101), |old(~C4~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000110), |old(~C5~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] RET #32#return; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] CALL call #t~ret10 := main(); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] havoc ~x~1;havoc ~y~0;~x~1 := #t~nondet8;havoc #t~nondet8;assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [main_~x~1=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] ~a := #in~a;call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8bv32);havoc ~r~0;havoc ~exp~0;call write~intFLOATTYPE8(~a, ~#x~0.base, ~#x~0.offset, 8bv32);call #t~mem0 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32);call write~intFLOATTYPE8(#t~union1, ~#x~0.base, ~#x~0.offset, 8bv32);havoc #t~mem0;havoc #t~union1;call #t~mem2 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem2;call #t~mem3 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32);~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5));call write~intINTTYPE4(#t~union4[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32);call write~intINTTYPE4(#t~union4[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);havoc #t~mem3;havoc #t~union4;~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [sqrt_custom_~a=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), sqrt_custom_~exp~0=(_ bv512 32), sqrt_custom_~r~0=(fp #b0 #b01111111111 #b0010010101001111111010000101001010100000101001010100), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |sqrt_custom_~#x~0.base|=(_ bv2 32), |sqrt_custom_~#x~0.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume 0bv32 == ~bvsrem32(~exp~0, 2bv32);#t~post5 := ~exp~0;~exp~0 := ~bvadd32(1bv32, #t~post5);havoc #t~post5; VAL [sqrt_custom_~a=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), sqrt_custom_~exp~0=(_ bv513 32), sqrt_custom_~r~0=(fp #b0 #b01111111111 #b0010010101001111111010000101001010100000101001010100), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |sqrt_custom_~#x~0.base|=(_ bv2 32), |sqrt_custom_~#x~0.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), ~#x~0.base, ~#x~0.offset, 4bv32);call #t~mem6 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32);~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6);call write~intINTTYPE4(#t~union7[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32);call write~intINTTYPE4(#t~union7[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);havoc #t~union7;havoc #t~mem6;#res := ~r~0;call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset);havoc ~#x~0.base, ~#x~0.offset; VAL [sqrt_custom_~a=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), sqrt_custom_~exp~0=(_ bv513 32), sqrt_custom_~r~0=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |sqrt_custom_#res|=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume true; VAL [sqrt_custom_~a=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), sqrt_custom_~exp~0=(_ bv513 32), sqrt_custom_~r~0=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |sqrt_custom_#res|=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] RET #36#return; VAL [main_~x~1=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_#t~ret9|=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] ~y~0 := #t~ret9;havoc #t~ret9; VAL [main_~x~1=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), main_~y~0=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |__VERIFIER_assert_#in~cond|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] ~cond := #in~cond; VAL [__VERIFIER_assert_~cond=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |__VERIFIER_assert_#in~cond|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume 0bv32 == ~cond; VAL [__VERIFIER_assert_~cond=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |__VERIFIER_assert_#in~cond|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume !false; VAL [__VERIFIER_assert_~cond=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |__VERIFIER_assert_#in~cond|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=7bv32, #NULL.offset=5bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32; [?] #valid := #valid[0bv32 := 0bv1]; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] ensures true; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] call write~intFLOATTYPE8(~a, ~#x~0.base, ~#x~0.offset, 8bv32); [L32] call #t~mem0 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] call write~intFLOATTYPE8(#t~union1, ~#x~0.base, ~#x~0.offset, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] call #t~mem2 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L33] call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), ~#x~0.base, ~#x~0.offset, 4bv32); [L33] havoc #t~mem2; [L34] call #t~mem3 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] call write~intINTTYPE4(#t~union4[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32); [L34] call write~intINTTYPE4(#t~union4[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~#x~0.base=2bv32, ~#x~0.offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38-L43] assume 0bv32 == ~bvsrem32(~exp~0, 2bv32); [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~#x~0.base=2bv32, ~#x~0.offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), ~#x~0.base, ~#x~0.offset, 4bv32); [L46] call #t~mem6 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] call write~intINTTYPE4(#t~union7[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32); [L46] call write~intINTTYPE4(#t~union7[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset); [L48] havoc ~#x~0.base, ~#x~0.offset; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L24-L49] ensures true; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assume 0bv32 == ~cond; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=7bv32, #NULL.offset=5bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32; [?] #valid := #valid[0bv32 := 0bv1]; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] ensures true; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] call write~intFLOATTYPE8(~a, ~#x~0.base, ~#x~0.offset, 8bv32); [L32] call #t~mem0 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] call write~intFLOATTYPE8(#t~union1, ~#x~0.base, ~#x~0.offset, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] call #t~mem2 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L33] call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), ~#x~0.base, ~#x~0.offset, 4bv32); [L33] havoc #t~mem2; [L34] call #t~mem3 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] call write~intINTTYPE4(#t~union4[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32); [L34] call write~intINTTYPE4(#t~union4[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~#x~0.base=2bv32, ~#x~0.offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38-L43] assume 0bv32 == ~bvsrem32(~exp~0, 2bv32); [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~#x~0.base=2bv32, ~#x~0.offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), ~#x~0.base, ~#x~0.offset, 4bv32); [L46] call #t~mem6 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] call write~intINTTYPE4(#t~union7[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32); [L46] call write~intINTTYPE4(#t~union7[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset); [L48] havoc ~#x~0.base, ~#x~0.offset; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L24-L49] ensures true; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assume 0bv32 == ~cond; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=7bv32, #NULL!offset=5bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~intFLOATTYPE8(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] FCALL call #t~mem0 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] FCALL call write~intFLOATTYPE8(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] FCALL call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] FCALL call write~intINTTYPE4(#t~union4[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L34] FCALL call write~intINTTYPE4(#t~union4[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38] COND TRUE 0bv32 == ~bvsrem32(~exp~0, 2bv32) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] FCALL call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call #t~mem6 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] FCALL call write~intINTTYPE4(#t~union7[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call write~intINTTYPE4(#t~union7[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] COND TRUE 0bv32 == ~cond VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=7bv32, #NULL!offset=5bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~intFLOATTYPE8(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] FCALL call #t~mem0 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] FCALL call write~intFLOATTYPE8(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] FCALL call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] FCALL call write~intINTTYPE4(#t~union4[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L34] FCALL call write~intINTTYPE4(#t~union4[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38] COND TRUE 0bv32 == ~bvsrem32(~exp~0, 2bv32) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] FCALL call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call #t~mem6 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] FCALL call write~intINTTYPE4(#t~union7[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call write~intINTTYPE4(#t~union7[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] COND TRUE 0bv32 == ~cond VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=7bv32, #NULL!offset=5bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~intFLOATTYPE8(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] FCALL call #t~mem0 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] FCALL call write~intFLOATTYPE8(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] FCALL call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] FCALL call write~intINTTYPE4(#t~union4[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L34] FCALL call write~intINTTYPE4(#t~union4[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38] COND TRUE 0bv32 == ~bvsrem32(~exp~0, 2bv32) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] FCALL call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call #t~mem6 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] FCALL call write~intINTTYPE4(#t~union7[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call write~intINTTYPE4(#t~union7[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] COND TRUE 0bv32 == ~cond VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=7bv32, #NULL!offset=5bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~intFLOATTYPE8(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] FCALL call #t~mem0 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] FCALL call write~intFLOATTYPE8(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] FCALL call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] FCALL call write~intINTTYPE4(#t~union4[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L34] FCALL call write~intINTTYPE4(#t~union4[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38] COND TRUE 0bv32 == ~bvsrem32(~exp~0, 2bv32) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] FCALL call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call #t~mem6 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] FCALL call write~intINTTYPE4(#t~union7[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call write~intINTTYPE4(#t~union7[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] COND TRUE 0bv32 == ~cond VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L12] double C0 = 1.414213538; [L13] double C1 = 0.229761391; [L14] double C2 = 1.296735525; [L15] double C3 = -0.901098370; [L16] double C4 = 0.493553400; [L17] double C5 = -0.118958666; VAL [\old(C0)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035, \old(C1)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010, \old(C2)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015, \old(C3)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025, \old(C4)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030, \old(C5)=0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L53] double x,y; [L55] x = __VERIFIER_nondet_double() [L58] CALL, EXPR sqrt_custom(x) VAL [\old(a)=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L26] union u x; [L27] double r; [L28] int exp; [L30] x.d = a [L32] EXPR x.i[0] [L32] exp = (x.i[0] & 0x7FF00000) >> 20 [L33] EXPR x.i[0] [L33] x.i[0] = (x.i[0] & 0x800FFFFF) | 0x3FF00000 [L34] EXPR x.d [L34] r = x.d * 0.5 [L36] r = C1+C2+(C3+(C4+C5*r)*r)*r VAL [\old(a)=1.1641532182693488, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=512, r=1.1457505418517444, x={2:0}] [L38] COND TRUE exp % 2 == 0 [L39] exp++ VAL [\old(a)=1.1641532182693488, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=513, r=1.1457505418517444, x={2:0}] [L45] x.i[0] = (exp/2 + 511) << 20 [L46] EXPR x.d [L46] r = r * x.d [L48] return r; [L48] return r; VAL [\old(a)=1.1641532182693488, \result=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=513, r=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019] [L58] RET, EXPR sqrt_custom(x) VAL [C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, sqrt_custom(x)=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019, x=1.1641532182693488] [L58] y = sqrt_custom(x) [L60] CALL __VERIFIER_assert(y >= 0. && y <= 1e6) VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L9] COND TRUE !(cond) VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, cond=0] [L9] __VERIFIER_error() VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, cond=0] ----- [2018-11-23 12:34:04,248 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction CFG 23.11 12:34:04 BoogieIcfgContainer [2018-11-23 12:34:04,248 INFO L132 PluginConnector]: ------------------------ END TraceAbstraction---------------------------- [2018-11-23 12:34:04,249 INFO L113 PluginConnector]: ------------------------Witness Printer---------------------------- [2018-11-23 12:34:04,249 INFO L271 PluginConnector]: Initializing Witness Printer... [2018-11-23 12:34:04,249 INFO L276 PluginConnector]: Witness Printer initialized [2018-11-23 12:34:04,249 INFO L185 PluginConnector]: Executing the observer RCFGCatcher from plugin Witness Printer for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:34:01" (3/4) ... [2018-11-23 12:34:04,251 INFO L138 WitnessPrinter]: Generating witness for reachability counterexample ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); VAL [|#NULL.base|=(_ bv7 32), |#NULL.offset|=(_ bv5 32), |old(#NULL.base)|=(_ bv7 32), |old(#NULL.offset)|=(_ bv5 32), |old(~C0~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000111), |old(~C1~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000010), |old(~C2~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000011), |old(~C3~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000101), |old(~C4~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000110), |old(~C5~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000001), ~C0~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000111), ~C1~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000010), ~C2~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000011), ~C3~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000101), ~C4~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000110), ~C5~0=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000001)] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538);~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391);~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525);~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837));~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534);~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv7 32), |old(#NULL.offset)|=(_ bv5 32), |old(~C0~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000111), |old(~C1~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000010), |old(~C2~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000011), |old(~C3~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000101), |old(~C4~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000110), |old(~C5~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume true; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv7 32), |old(#NULL.offset)|=(_ bv5 32), |old(~C0~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000111), |old(~C1~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000010), |old(~C2~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000011), |old(~C3~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000101), |old(~C4~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000110), |old(~C5~0)|=(fp #b0 #b00000000000 #b0000000000000000000000000000000000000000000000000001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] RET #32#return; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] CALL call #t~ret10 := main(); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] havoc ~x~1;havoc ~y~0;~x~1 := #t~nondet8;havoc #t~nondet8;assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [main_~x~1=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] ~a := #in~a;call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8bv32);havoc ~r~0;havoc ~exp~0;call write~intFLOATTYPE8(~a, ~#x~0.base, ~#x~0.offset, 8bv32);call #t~mem0 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32);call write~intFLOATTYPE8(#t~union1, ~#x~0.base, ~#x~0.offset, 8bv32);havoc #t~mem0;havoc #t~union1;call #t~mem2 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem2;call #t~mem3 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32);~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5));call write~intINTTYPE4(#t~union4[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32);call write~intINTTYPE4(#t~union4[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);havoc #t~mem3;havoc #t~union4;~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [sqrt_custom_~a=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), sqrt_custom_~exp~0=(_ bv512 32), sqrt_custom_~r~0=(fp #b0 #b01111111111 #b0010010101001111111010000101001010100000101001010100), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |sqrt_custom_~#x~0.base|=(_ bv2 32), |sqrt_custom_~#x~0.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume 0bv32 == ~bvsrem32(~exp~0, 2bv32);#t~post5 := ~exp~0;~exp~0 := ~bvadd32(1bv32, #t~post5);havoc #t~post5; VAL [sqrt_custom_~a=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), sqrt_custom_~exp~0=(_ bv513 32), sqrt_custom_~r~0=(fp #b0 #b01111111111 #b0010010101001111111010000101001010100000101001010100), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |sqrt_custom_~#x~0.base|=(_ bv2 32), |sqrt_custom_~#x~0.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), ~#x~0.base, ~#x~0.offset, 4bv32);call #t~mem6 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32);~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6);call write~intINTTYPE4(#t~union7[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32);call write~intINTTYPE4(#t~union7[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);havoc #t~union7;havoc #t~mem6;#res := ~r~0;call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset);havoc ~#x~0.base, ~#x~0.offset; VAL [sqrt_custom_~a=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), sqrt_custom_~exp~0=(_ bv513 32), sqrt_custom_~r~0=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |sqrt_custom_#res|=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume true; VAL [sqrt_custom_~a=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), sqrt_custom_~exp~0=(_ bv513 32), sqrt_custom_~r~0=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |sqrt_custom_#in~a|=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |sqrt_custom_#res|=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] RET #36#return; VAL [main_~x~1=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_#t~ret9|=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] ~y~0 := #t~ret9;havoc #t~ret9; VAL [main_~x~1=(fp #b0 #b01111111111 #b0010101000000101111100100000000000000000000000000011), main_~y~0=(fp #b1 #b00000000000 #b0000000000000000000000110110111011001010011010010001), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |__VERIFIER_assert_#in~cond|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] ~cond := #in~cond; VAL [__VERIFIER_assert_~cond=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |__VERIFIER_assert_#in~cond|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume 0bv32 == ~cond; VAL [__VERIFIER_assert_~cond=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |__VERIFIER_assert_#in~cond|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] assume !false; VAL [__VERIFIER_assert_~cond=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |__VERIFIER_assert_#in~cond|=(_ bv0 32), ~C0~0=(fp #b0 #b01111111111 #b0110101000001001111001011111111101000101001111000111), ~C1~0=(fp #b0 #b01111111100 #b1101011010001101001000111110000111010011111001110111), ~C2~0=(fp #b0 #b01111111111 #b0100101111110110110110111111111101101111101101110101), ~C3~0=(fp #b1 #b01111111110 #b1100110101011100110000111111101101000010000000000011), ~C4~0=(fp #b0 #b01111111101 #b1111100101100110000011111111111101010001100001000101), ~C5~0=(fp #b1 #b01111111011 #b1110011101000001001100111100000010111011100010110101)] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=7bv32, #NULL.offset=5bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32; [?] #valid := #valid[0bv32 := 0bv1]; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] ensures true; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] call write~intFLOATTYPE8(~a, ~#x~0.base, ~#x~0.offset, 8bv32); [L32] call #t~mem0 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] call write~intFLOATTYPE8(#t~union1, ~#x~0.base, ~#x~0.offset, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] call #t~mem2 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L33] call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), ~#x~0.base, ~#x~0.offset, 4bv32); [L33] havoc #t~mem2; [L34] call #t~mem3 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] call write~intINTTYPE4(#t~union4[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32); [L34] call write~intINTTYPE4(#t~union4[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~#x~0.base=2bv32, ~#x~0.offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38-L43] assume 0bv32 == ~bvsrem32(~exp~0, 2bv32); [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~#x~0.base=2bv32, ~#x~0.offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), ~#x~0.base, ~#x~0.offset, 4bv32); [L46] call #t~mem6 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] call write~intINTTYPE4(#t~union7[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32); [L46] call write~intINTTYPE4(#t~union7[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset); [L48] havoc ~#x~0.base, ~#x~0.offset; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L24-L49] ensures true; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assume 0bv32 == ~cond; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=7bv32, #NULL.offset=5bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32; [?] #valid := #valid[0bv32 := 0bv1]; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] ensures true; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=7bv32, old(#NULL.offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] call write~intFLOATTYPE8(~a, ~#x~0.base, ~#x~0.offset, 8bv32); [L32] call #t~mem0 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] call write~intFLOATTYPE8(#t~union1, ~#x~0.base, ~#x~0.offset, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] call #t~mem2 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L33] call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), ~#x~0.base, ~#x~0.offset, 4bv32); [L33] havoc #t~mem2; [L34] call #t~mem3 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] call write~intINTTYPE4(#t~union4[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32); [L34] call write~intINTTYPE4(#t~union4[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~#x~0.base=2bv32, ~#x~0.offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38-L43] assume 0bv32 == ~bvsrem32(~exp~0, 2bv32); [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, ~#x~0.base=2bv32, ~#x~0.offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), ~#x~0.base, ~#x~0.offset, 4bv32); [L46] call #t~mem6 := read~intFLOATTYPE8(~#x~0.base, ~#x~0.offset, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] call write~intINTTYPE4(#t~union7[0bv32], ~#x~0.base, ~#x~0.offset, 4bv32); [L46] call write~intINTTYPE4(#t~union7[1bv32], ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] call ULTIMATE.dealloc(~#x~0.base, ~#x~0.offset); [L48] havoc ~#x~0.base, ~#x~0.offset; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L24-L49] ensures true; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL.base=0bv32, #NULL.offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assume 0bv32 == ~cond; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=7bv32, #NULL!offset=5bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~intFLOATTYPE8(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] FCALL call #t~mem0 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] FCALL call write~intFLOATTYPE8(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] FCALL call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] FCALL call write~intINTTYPE4(#t~union4[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L34] FCALL call write~intINTTYPE4(#t~union4[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38] COND TRUE 0bv32 == ~bvsrem32(~exp~0, 2bv32) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] FCALL call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call #t~mem6 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] FCALL call write~intINTTYPE4(#t~union7[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call write~intINTTYPE4(#t~union7[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] COND TRUE 0bv32 == ~cond VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=7bv32, #NULL!offset=5bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~intFLOATTYPE8(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] FCALL call #t~mem0 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] FCALL call write~intFLOATTYPE8(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] FCALL call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] FCALL call write~intINTTYPE4(#t~union4[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L34] FCALL call write~intINTTYPE4(#t~union4[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38] COND TRUE 0bv32 == ~bvsrem32(~exp~0, 2bv32) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] FCALL call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call #t~mem6 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] FCALL call write~intINTTYPE4(#t~union7[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call write~intINTTYPE4(#t~union7[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] COND TRUE 0bv32 == ~cond VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=7bv32, #NULL!offset=5bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~intFLOATTYPE8(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] FCALL call #t~mem0 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] FCALL call write~intFLOATTYPE8(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] FCALL call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] FCALL call write~intINTTYPE4(#t~union4[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L34] FCALL call write~intINTTYPE4(#t~union4[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38] COND TRUE 0bv32 == ~bvsrem32(~exp~0, 2bv32) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] FCALL call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call #t~mem6 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] FCALL call write~intINTTYPE4(#t~union7[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call write~intINTTYPE4(#t~union7[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] COND TRUE 0bv32 == ~cond VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=7bv32, #NULL!offset=5bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), ~C3~0=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), ~C5~0=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52)] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L12] ~C0~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.414213538); [L13] ~C1~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.229761391); [L14] ~C2~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.296735525); [L15] ~C3~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.90109837)); [L16] ~C4~0 := ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.4935534); [L17] ~C5~0 := ~fp.neg~DOUBLE(~to_fp~DOUBLE(~roundNearestTiesToEven, 0.118958666)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=7bv32, old(#NULL!offset)=5bv32, old(~C0~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 7bv52), old(~C1~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 2bv52), old(~C2~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 3bv52), old(~C3~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 5bv52), old(~C4~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 6bv52), old(~C5~0)=~fp~LONGDOUBLE(0bv1, 0bv11, 1bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [?] CALL call #t~ret10 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L53] havoc ~x~1; [L53] havoc ~y~0; [L55] ~x~1 := #t~nondet8; [L55] havoc #t~nondet8; [L56] assume 0bv32 != (if ~fp.geq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0)) && ~fp.leq~DOUBLE(~x~1, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1.0E10)) then 1bv32 else 0bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] CALL call #t~ret9 := sqrt_custom(~x~1); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L24-L49] ~a := #in~a; [L26] FCALL call ~#x~0 := #Ultimate.alloc(8bv32); [L27] havoc ~r~0; [L28] havoc ~exp~0; [L30] FCALL call write~intFLOATTYPE8(~a, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] FCALL call #t~mem0 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L32] ~exp~0 := ~bvashr32(~bvand32(2146435072bv32, #t~mem0), 20bv32); [L32] FCALL call write~intFLOATTYPE8(#t~union1, { base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L32] havoc #t~mem0; [L32] havoc #t~union1; [L33] FCALL call #t~mem2 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] FCALL call write~intINTTYPE4(~bvor32(1072693248bv32, ~bvand32(2148532223bv32, #t~mem2)), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L33] havoc #t~mem2; [L34] FCALL call #t~mem3 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L34] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, #t~mem3, ~to_fp~DOUBLE(~roundNearestTiesToEven, 0.5)); [L34] FCALL call write~intINTTYPE4(#t~union4[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L34] FCALL call write~intINTTYPE4(#t~union4[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L34] havoc #t~mem3; [L34] havoc #t~union4; [L36] ~r~0 := ~fp.add~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C1~0, ~C2~0), ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C3~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~fp.add~DOUBLE(~roundNearestTiesToEven, ~C4~0, ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~C5~0, ~r~0)), ~r~0)), ~r~0)); VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=512bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L38] COND TRUE 0bv32 == ~bvsrem32(~exp~0, 2bv32) [L39] #t~post5 := ~exp~0; [L39] ~exp~0 := ~bvadd32(1bv32, #t~post5); [L39] havoc #t~post5; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, ~#x~0!base=2bv32, ~#x~0!offset=0bv32, ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 656402085972564bv52)] [L45] FCALL call write~intINTTYPE4(~bvshl32(~bvadd32(511bv32, ~bvsdiv32(~exp~0, 2bv32)), 20bv32), { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call #t~mem6 := read~intFLOATTYPE8({ base: ~#x~0!base, offset: ~#x~0!offset }, 8bv32); [L46] ~r~0 := ~fp.mul~DOUBLE(~roundNearestTiesToEven, ~r~0, #t~mem6); [L46] FCALL call write~intINTTYPE4(#t~union7[0bv32], { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L46] FCALL call write~intINTTYPE4(#t~union7[1bv32], { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L46] havoc #t~union7; [L46] havoc #t~mem6; [L48] #res := ~r~0; [L26] FCALL call ULTIMATE.dealloc(~#x~0); [L48] havoc ~#x~0; VAL [#in~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), #NULL!base=0bv32, #NULL!offset=0bv32, #res=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~a=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~exp~0=513bv32, ~r~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L58] RET call #t~ret9 := sqrt_custom(~x~1); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret9=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52), ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52)] [L58] ~y~0 := #t~ret9; [L58] havoc #t~ret9; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~x~1=~fp~LONGDOUBLE(0bv1, 1023bv11, 739280372629507bv52), ~y~0=~fp~LONGDOUBLE(1bv1, 0bv11, 921478801bv52)] [L60] CALL call __VERIFIER_assert((if ~fp.geq~DOUBLE(~y~0, ~Pluszero~DOUBLE()) && ~fp.leq~DOUBLE(~y~0, ~to_fp~DOUBLE(~roundNearestTiesToEven, 1000000.0)) then 1bv32 else 0bv32)); VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52)] [L9] ~cond := #in~cond; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] COND TRUE 0bv32 == ~cond VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L9] assert false; VAL [#in~cond=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, ~C0~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1865451935388615bv52), ~C1~0=~fp~LONGDOUBLE(0bv1, 1020bv11, 3774426891763319bv52), ~C2~0=~fp~LONGDOUBLE(0bv1, 1023bv11, 1336377999817589bv52), ~C3~0=~fp~LONGDOUBLE(1bv1, 1022bv11, 3612772939341827bv52), ~C4~0=~fp~LONGDOUBLE(0bv1, 1021bv11, 4387468005939269bv52), ~C5~0=~fp~LONGDOUBLE(1bv1, 1019bv11, 4068275634550965bv52), ~cond=0bv32] [L12] double C0 = 1.414213538; [L13] double C1 = 0.229761391; [L14] double C2 = 1.296735525; [L15] double C3 = -0.901098370; [L16] double C4 = 0.493553400; [L17] double C5 = -0.118958666; VAL [\old(C0)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035, \old(C1)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010, \old(C2)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015, \old(C3)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025, \old(C4)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030, \old(C5)=0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L53] double x,y; [L55] x = __VERIFIER_nondet_double() [L58] CALL, EXPR sqrt_custom(x) VAL [\old(a)=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L26] union u x; [L27] double r; [L28] int exp; [L30] x.d = a [L32] EXPR x.i[0] [L32] exp = (x.i[0] & 0x7FF00000) >> 20 [L33] EXPR x.i[0] [L33] x.i[0] = (x.i[0] & 0x800FFFFF) | 0x3FF00000 [L34] EXPR x.d [L34] r = x.d * 0.5 [L36] r = C1+C2+(C3+(C4+C5*r)*r)*r VAL [\old(a)=1.1641532182693488, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=512, r=1.1457505418517444, x={2:0}] [L38] COND TRUE exp % 2 == 0 [L39] exp++ VAL [\old(a)=1.1641532182693488, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=513, r=1.1457505418517444, x={2:0}] [L45] x.i[0] = (exp/2 + 511) << 20 [L46] EXPR x.d [L46] r = r * x.d [L48] return r; [L48] return r; VAL [\old(a)=1.1641532182693488, \result=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=513, r=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019] [L58] RET, EXPR sqrt_custom(x) VAL [C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, sqrt_custom(x)=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019, x=1.1641532182693488] [L58] y = sqrt_custom(x) [L60] CALL __VERIFIER_assert(y >= 0. && y <= 1e6) VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L9] COND TRUE !(cond) VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, cond=0] [L9] __VERIFIER_error() VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, cond=0] ----- [2018-11-23 12:34:04,396 INFO L145 WitnessManager]: Wrote witness to /tmp/vcloud-vcloud-master/worker/working_dir_ab97ac62-7dcc-4bf0-90cb-e282a82b5af4/bin-2019/utaipan/witness.graphml [2018-11-23 12:34:04,396 INFO L132 PluginConnector]: ------------------------ END Witness Printer---------------------------- [2018-11-23 12:34:04,397 INFO L168 Benchmark]: Toolchain (without parser) took 6325.91 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 124.8 MB). Free memory was 949.7 MB in the beginning and 1.0 GB in the end (delta: -97.9 MB). Peak memory consumption was 26.9 MB. Max. memory is 11.5 GB. [2018-11-23 12:34:04,398 INFO L168 Benchmark]: CDTParser took 0.12 ms. Allocated memory is still 1.0 GB. Free memory is still 978.7 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:34:04,398 INFO L168 Benchmark]: CACSL2BoogieTranslator took 207.89 ms. Allocated memory is still 1.0 GB. Free memory was 949.7 MB in the beginning and 933.6 MB in the end (delta: 16.1 MB). Peak memory consumption was 16.1 MB. Max. memory is 11.5 GB. [2018-11-23 12:34:04,398 INFO L168 Benchmark]: Boogie Procedure Inliner took 16.26 ms. Allocated memory is still 1.0 GB. Free memory is still 933.6 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:34:04,398 INFO L168 Benchmark]: Boogie Preprocessor took 19.84 ms. Allocated memory is still 1.0 GB. Free memory is still 933.6 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:34:04,399 INFO L168 Benchmark]: RCFGBuilder took 2962.66 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 124.8 MB). Free memory was 933.6 MB in the beginning and 1.1 GB in the end (delta: -153.0 MB). Peak memory consumption was 15.8 MB. Max. memory is 11.5 GB. [2018-11-23 12:34:04,399 INFO L168 Benchmark]: TraceAbstraction took 2968.98 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 32.3 MB). Peak memory consumption was 32.3 MB. Max. memory is 11.5 GB. [2018-11-23 12:34:04,399 INFO L168 Benchmark]: Witness Printer took 147.30 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.0 GB in the end (delta: 6.7 MB). Peak memory consumption was 6.7 MB. Max. memory is 11.5 GB. [2018-11-23 12:34:04,401 INFO L336 ainManager$Toolchain]: ####################### End [Toolchain 1] ####################### --- Results --- * Results from de.uni_freiburg.informatik.ultimate.core: - StatisticsResult: Toolchain Benchmarks Benchmark results are: * CDTParser took 0.12 ms. Allocated memory is still 1.0 GB. Free memory is still 978.7 MB. There was no memory consumed. Max. memory is 11.5 GB. * CACSL2BoogieTranslator took 207.89 ms. Allocated memory is still 1.0 GB. Free memory was 949.7 MB in the beginning and 933.6 MB in the end (delta: 16.1 MB). Peak memory consumption was 16.1 MB. Max. memory is 11.5 GB. * Boogie Procedure Inliner took 16.26 ms. Allocated memory is still 1.0 GB. Free memory is still 933.6 MB. There was no memory consumed. Max. memory is 11.5 GB. * Boogie Preprocessor took 19.84 ms. Allocated memory is still 1.0 GB. Free memory is still 933.6 MB. There was no memory consumed. Max. memory is 11.5 GB. * RCFGBuilder took 2962.66 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 124.8 MB). Free memory was 933.6 MB in the beginning and 1.1 GB in the end (delta: -153.0 MB). Peak memory consumption was 15.8 MB. Max. memory is 11.5 GB. * TraceAbstraction took 2968.98 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 32.3 MB). Peak memory consumption was 32.3 MB. Max. memory is 11.5 GB. * Witness Printer took 147.30 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.0 GB in the end (delta: 6.7 MB). Peak memory consumption was 6.7 MB. Max. memory is 11.5 GB. * Results from de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction: - CounterExampleResult [Line: 9]: a call of __VERIFIER_error() is reachable a call of __VERIFIER_error() is reachable We found a FailurePath: [L12] double C0 = 1.414213538; [L13] double C1 = 0.229761391; [L14] double C2 = 1.296735525; [L15] double C3 = -0.901098370; [L16] double C4 = 0.493553400; [L17] double C5 = -0.118958666; VAL [\old(C0)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035, \old(C1)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010, \old(C2)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015, \old(C3)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025, \old(C4)=0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030, \old(C5)=0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L53] double x,y; [L55] x = __VERIFIER_nondet_double() [L58] CALL, EXPR sqrt_custom(x) VAL [\old(a)=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L26] union u x; [L27] double r; [L28] int exp; [L30] x.d = a [L32] EXPR x.i[0] [L32] exp = (x.i[0] & 0x7FF00000) >> 20 [L33] EXPR x.i[0] [L33] x.i[0] = (x.i[0] & 0x800FFFFF) | 0x3FF00000 [L34] EXPR x.d [L34] r = x.d * 0.5 [L36] r = C1+C2+(C3+(C4+C5*r)*r)*r VAL [\old(a)=1.1641532182693488, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=512, r=1.1457505418517444, x={2:0}] [L38] COND TRUE exp % 2 == 0 [L39] exp++ VAL [\old(a)=1.1641532182693488, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=513, r=1.1457505418517444, x={2:0}] [L45] x.i[0] = (exp/2 + 511) << 20 [L46] EXPR x.d [L46] r = r * x.d [L48] return r; [L48] return r; VAL [\old(a)=1.1641532182693488, \result=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019, a=1.1641532182693488, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, exp=513, r=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019] [L58] RET, EXPR sqrt_custom(x) VAL [C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, sqrt_custom(x)=-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000455271019, x=1.1641532182693488] [L58] y = sqrt_custom(x) [L60] CALL __VERIFIER_assert(y >= 0. && y <= 1e6) VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666] [L9] COND TRUE !(cond) VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, cond=0] [L9] __VERIFIER_error() VAL [\old(cond)=0, C0=1.414213538, C1=0.229761391, C2=1.296735525, C3=-0.90109837, C4=0.4935534, C5=-0.118958666, cond=0] - StatisticsResult: Ultimate Automizer benchmark data CFG has 5 procedures, 25 locations, 1 error locations. UNSAFE Result, 2.9s OverallTime, 1 OverallIterations, 1 TraceHistogramMax, 0.0s AutomataDifference, 0.0s DeadEndRemovalTime, 0.0s HoareAnnotationTime, HoareTripleCheckerStatistics: No data available, PredicateUnifierStatistics: No data available, 0.0s BasicInterpolantAutomatonTime, BiggestAbstraction: size=25occurred in iteration=0, traceCheckStatistics: No data available, InterpolantConsolidationStatistics: No data available, PathInvariantsStatistics: No data available, 0/0 InterpolantCoveringCapability, TotalInterpolationStatistics: No data available, 0.0s AbstIntTime, 0 AbstIntIterations, 0 AbstIntStrong, NaN AbsIntWeakeningRatio, NaN AbsIntAvgWeakeningVarsNumRemoved, NaN AbsIntAvgWeakenedConjuncts, 0.0s DumpTime, AutomataMinimizationStatistics: No data available, HoareAnnotationStatistics: No data available, RefinementEngineStatistics: TraceCheckStatistics: 0.0s SsaConstructionTime, 1.2s SatisfiabilityAnalysisTime, 0.0s InterpolantComputationTime, 17 NumberOfCodeBlocks, 17 NumberOfCodeBlocksAsserted, 1 NumberOfCheckSat, 0 ConstructedInterpolants, 0 QuantifiedInterpolants, 0 SizeOfPredicates, 0 NumberOfNonLiveVariables, 0 ConjunctsInSsa, 0 ConjunctsInUnsatCore, 0 InterpolantComputations, 0 PerfectInterpolantSequences, 0/0 InterpolantCoveringCapability, InvariantSynthesisStatistics: No data available, InterpolantConsolidationStatistics: No data available, ReuseStatistics: No data available RESULT: Ultimate proved your program to be incorrect! Received shutdown request...