./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_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data/config -Xmx12G -Xms1G -jar /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data -tc /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/config/AutomizerReach.xml -i ../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c -s /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Default.epf --cacsl2boogietranslator.entry.function main --witnessprinter.witness.directory /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer --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 Automizer --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_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data/config -Xmx12G -Xms1G -jar /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data -tc /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/config/AutomizerReach.xml -i ../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c -s /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Bitvector.epf --cacsl2boogietranslator.entry.function main --witnessprinter.witness.directory /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer --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 Automizer --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:12:13,781 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 12:12:13,782 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 12:12:13,789 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 12:12:13,790 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 12:12:13,790 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 12:12:13,791 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 12:12:13,792 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 12:12:13,792 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 12:12:13,793 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 12:12:13,793 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 12:12:13,793 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 12:12:13,794 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 12:12:13,795 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 12:12:13,795 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 12:12:13,796 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 12:12:13,796 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 12:12:13,797 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 12:12:13,798 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 12:12:13,799 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 12:12:13,800 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 12:12:13,800 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 12:12:13,801 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 12:12:13,802 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 12:12:13,802 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 12:12:13,802 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 12:12:13,803 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 12:12:13,804 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 12:12:13,804 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 12:12:13,805 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 12:12:13,805 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 12:12:13,806 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 12:12:13,806 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 12:12:13,806 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 12:12:13,807 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 12:12:13,807 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 12:12:13,807 INFO L98 SettingsManager]: Beginning loading settings from /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Default.epf [2018-11-23 12:12:13,814 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 12:12:13,814 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 12:12:13,815 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 12:12:13,815 INFO L133 SettingsManager]: * ... calls to implemented procedures=ONLY_FOR_CONCURRENT_PROGRAMS [2018-11-23 12:12:13,816 INFO L131 SettingsManager]: Preferences of BlockEncodingV2 differ from their defaults: [2018-11-23 12:12:13,816 INFO L133 SettingsManager]: * Create parallel compositions if possible=false [2018-11-23 12:12:13,816 INFO L133 SettingsManager]: * Use SBE=true [2018-11-23 12:12:13,816 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 12:12:13,816 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 12:12:13,816 INFO L133 SettingsManager]: * Overapproximate operations on floating types=true [2018-11-23 12:12:13,817 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 12:12:13,817 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 12:12:13,817 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 12:12:13,817 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 12:12:13,817 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 12:12:13,817 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 12:12:13,817 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 12:12:13,818 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 12:12:13,818 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 12:12:13,818 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 12:12:13,818 INFO L133 SettingsManager]: * Size of a code block=SequenceOfStatements [2018-11-23 12:12:13,818 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 12:12:13,818 INFO L133 SettingsManager]: * SMT solver=External_DefaultMode [2018-11-23 12:12:13,818 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 12:12:13,819 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 12:12:13,819 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 12:12:13,819 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 12:12:13,819 INFO L133 SettingsManager]: * Trace refinement strategy=CAMEL [2018-11-23 12:12:13,819 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 12:12:13,819 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in [2018-11-23 12:12:13,819 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_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer 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 -> Automizer 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:12:13,843 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 12:12:13,852 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 12:12:13,854 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 12:12:13,855 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 12:12:13,856 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 12:12:13,856 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c [2018-11-23 12:12:13,897 INFO L221 CDTParser]: Created temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data/947aa7988/34bacc4eac974e2b85d0acbfc719765b/FLAG03f37dad8 [2018-11-23 12:12:14,197 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 12:12:14,197 INFO L161 CDTParser]: Scanning /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c [2018-11-23 12:12:14,202 INFO L355 CDTParser]: About to delete temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data/947aa7988/34bacc4eac974e2b85d0acbfc719765b/FLAG03f37dad8 [2018-11-23 12:12:14,213 INFO L363 CDTParser]: Successfully deleted /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data/947aa7988/34bacc4eac974e2b85d0acbfc719765b [2018-11-23 12:12:14,215 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 12:12:14,216 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 12:12:14,216 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 12:12:14,217 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 12:12:14,219 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 12:12:14,219 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,221 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@1dc74d92 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14, skipping insertion in model container [2018-11-23 12:12:14,221 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,227 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 12:12:14,240 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 12:12:14,359 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 12:12:14,362 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 12:12:14,379 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 12:12:14,393 INFO L195 MainTranslator]: Completed translation [2018-11-23 12:12:14,394 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14 WrapperNode [2018-11-23 12:12:14,394 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 12:12:14,394 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 12:12:14,394 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 12:12:14,394 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 12:12:14,399 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:12:14" (1/1) ... [2018-11-23 12:12:14,406 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:12:14" (1/1) ... [2018-11-23 12:12:14,412 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 12:12:14,412 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 12:12:14,412 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 12:12:14,412 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 12:12:14,455 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,455 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,457 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,457 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,463 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,464 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,465 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (1/1) ... [2018-11-23 12:12:14,466 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 12:12:14,467 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 12:12:14,467 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 12:12:14,467 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 12:12:14,468 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (1/1) ... No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/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:12:14,505 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 12:12:14,505 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 12:12:14,505 INFO L130 BoogieDeclarations]: Found specification of procedure read~real [2018-11-23 12:12:14,505 INFO L130 BoogieDeclarations]: Found specification of procedure write~int [2018-11-23 12:12:14,505 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 12:12:14,505 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 12:12:14,505 INFO L130 BoogieDeclarations]: Found specification of procedure write~real [2018-11-23 12:12:14,505 INFO L130 BoogieDeclarations]: Found specification of procedure #Ultimate.alloc [2018-11-23 12:12:14,506 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 12:12:14,506 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 12:12:14,506 INFO L130 BoogieDeclarations]: Found specification of procedure read~int [2018-11-23 12:12:14,506 INFO L130 BoogieDeclarations]: Found specification of procedure __VERIFIER_assert [2018-11-23 12:12:14,506 INFO L138 BoogieDeclarations]: Found implementation of procedure __VERIFIER_assert [2018-11-23 12:12:14,506 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.dealloc [2018-11-23 12:12:14,506 INFO L130 BoogieDeclarations]: Found specification of procedure sqrt_custom [2018-11-23 12:12:14,506 INFO L138 BoogieDeclarations]: Found implementation of procedure sqrt_custom [2018-11-23 12:12:14,654 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 12:12:14,654 INFO L280 CfgBuilder]: Removed 0 assue(true) statements. [2018-11-23 12:12:14,654 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:12:14 BoogieIcfgContainer [2018-11-23 12:12:14,654 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 12:12:14,655 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 12:12:14,655 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 12:12:14,657 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 12:12:14,657 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 12:12:14" (1/3) ... [2018-11-23 12:12:14,658 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@2af052ef and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 12:12:14, skipping insertion in model container [2018-11-23 12:12:14,658 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:14" (2/3) ... [2018-11-23 12:12:14,658 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@2af052ef and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 12:12:14, skipping insertion in model container [2018-11-23 12:12:14,658 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:12:14" (3/3) ... [2018-11-23 12:12:14,659 INFO L112 eAbstractionObserver]: Analyzing ICFG sqrt_poly2_false-unreach-call.c [2018-11-23 12:12:14,667 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 12:12:14,673 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 12:12:14,687 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 12:12:14,710 INFO L133 ementStrategyFactory]: Using default assertion order modulation [2018-11-23 12:12:14,711 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 12:12:14,711 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 12:12:14,711 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 12:12:14,711 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 12:12:14,711 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 12:12:14,711 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 12:12:14,711 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 12:12:14,711 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 12:12:14,721 INFO L276 IsEmpty]: Start isEmpty. Operand 25 states. [2018-11-23 12:12:14,724 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 18 [2018-11-23 12:12:14,724 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 12:12:14,725 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:12:14,726 INFO L423 AbstractCegarLoop]: === Iteration 1 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 12:12:14,730 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 12:12:14,730 INFO L82 PathProgramCache]: Analyzing trace with hash 230068877, now seen corresponding path program 1 times [2018-11-23 12:12:14,731 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 12:12:14,731 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 12:12:14,759 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 12:12:14,759 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 12:12:14,759 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 12:12:14,821 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 12:12:14,850 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 12:12:14,868 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:12:14,911 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction CFG 23.11 12:12:14 BoogieIcfgContainer [2018-11-23 12:12:14,911 INFO L132 PluginConnector]: ------------------------ END TraceAbstraction---------------------------- [2018-11-23 12:12:14,911 INFO L113 PluginConnector]: ------------------------Witness Printer---------------------------- [2018-11-23 12:12:14,911 INFO L271 PluginConnector]: Initializing Witness Printer... [2018-11-23 12:12:14,911 INFO L276 PluginConnector]: Witness Printer initialized [2018-11-23 12:12:14,912 INFO L185 PluginConnector]: Executing the observer RCFGCatcher from plugin Witness Printer for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:12:14" (3/4) ... [2018-11-23 12:12:14,916 INFO L147 WitnessPrinter]: No result that supports witness generation found [2018-11-23 12:12:14,916 INFO L132 PluginConnector]: ------------------------ END Witness Printer---------------------------- [2018-11-23 12:12:14,917 INFO L168 Benchmark]: Toolchain (without parser) took 701.25 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 144.7 MB). Free memory was 961.9 MB in the beginning and 1.1 GB in the end (delta: -129.2 MB). Peak memory consumption was 15.5 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:14,918 INFO L168 Benchmark]: CDTParser took 0.14 ms. Allocated memory is still 1.0 GB. Free memory is still 982.9 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:12:14,919 INFO L168 Benchmark]: CACSL2BoogieTranslator took 177.47 ms. Allocated memory is still 1.0 GB. Free memory was 961.9 MB in the beginning and 945.8 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:12:14,919 INFO L168 Benchmark]: Boogie Procedure Inliner took 17.71 ms. Allocated memory is still 1.0 GB. Free memory is still 945.8 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:12:14,919 INFO L168 Benchmark]: Boogie Preprocessor took 54.53 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 144.7 MB). Free memory was 945.8 MB in the beginning and 1.1 GB in the end (delta: -189.6 MB). Peak memory consumption was 14.6 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:14,920 INFO L168 Benchmark]: RCFGBuilder took 187.74 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: 18.6 MB). Peak memory consumption was 18.6 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:14,921 INFO L168 Benchmark]: TraceAbstraction took 255.83 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: 24.4 MB). Peak memory consumption was 24.4 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:14,921 INFO L168 Benchmark]: Witness Printer took 5.13 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: 1.4 MB). Peak memory consumption was 1.4 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:14,925 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.14 ms. Allocated memory is still 1.0 GB. Free memory is still 982.9 MB. There was no memory consumed. Max. memory is 11.5 GB. * CACSL2BoogieTranslator took 177.47 ms. Allocated memory is still 1.0 GB. Free memory was 961.9 MB in the beginning and 945.8 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 17.71 ms. Allocated memory is still 1.0 GB. Free memory is still 945.8 MB. There was no memory consumed. Max. memory is 11.5 GB. * Boogie Preprocessor took 54.53 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 144.7 MB). Free memory was 945.8 MB in the beginning and 1.1 GB in the end (delta: -189.6 MB). Peak memory consumption was 14.6 MB. Max. memory is 11.5 GB. * RCFGBuilder took 187.74 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: 18.6 MB). Peak memory consumption was 18.6 MB. Max. memory is 11.5 GB. * TraceAbstraction took 255.83 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: 24.4 MB). Peak memory consumption was 24.4 MB. Max. memory is 11.5 GB. * Witness Printer took 5.13 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: 1.4 MB). Peak memory consumption was 1.4 MB. 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:12:16,372 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 12:12:16,373 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 12:12:16,381 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 12:12:16,381 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 12:12:16,382 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 12:12:16,383 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 12:12:16,384 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 12:12:16,385 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 12:12:16,385 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 12:12:16,386 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 12:12:16,386 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 12:12:16,387 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 12:12:16,387 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 12:12:16,388 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 12:12:16,389 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 12:12:16,389 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 12:12:16,390 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 12:12:16,392 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 12:12:16,393 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 12:12:16,393 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 12:12:16,394 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 12:12:16,396 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 12:12:16,396 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 12:12:16,396 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 12:12:16,397 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 12:12:16,397 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 12:12:16,398 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 12:12:16,398 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 12:12:16,399 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 12:12:16,399 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 12:12:16,400 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 12:12:16,400 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 12:12:16,400 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 12:12:16,401 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 12:12:16,401 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 12:12:16,401 INFO L98 SettingsManager]: Beginning loading settings from /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Bitvector.epf [2018-11-23 12:12:16,411 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 12:12:16,411 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 12:12:16,412 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 12:12:16,412 INFO L133 SettingsManager]: * ... calls to implemented procedures=ONLY_FOR_CONCURRENT_PROGRAMS [2018-11-23 12:12:16,412 INFO L131 SettingsManager]: Preferences of BlockEncodingV2 differ from their defaults: [2018-11-23 12:12:16,413 INFO L133 SettingsManager]: * Create parallel compositions if possible=false [2018-11-23 12:12:16,413 INFO L133 SettingsManager]: * Use SBE=true [2018-11-23 12:12:16,413 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 12:12:16,413 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 12:12:16,413 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 12:12:16,413 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 12:12:16,413 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 12:12:16,413 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 12:12:16,414 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 12:12:16,414 INFO L133 SettingsManager]: * Use bitvectors instead of ints=true [2018-11-23 12:12:16,414 INFO L133 SettingsManager]: * Memory model=HoenickeLindenmann_4ByteResolution [2018-11-23 12:12:16,414 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 12:12:16,414 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 12:12:16,414 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 12:12:16,414 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 12:12:16,415 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 12:12:16,415 INFO L133 SettingsManager]: * Size of a code block=SequenceOfStatements [2018-11-23 12:12:16,415 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 12:12:16,415 INFO L133 SettingsManager]: * SMT solver=External_DefaultMode [2018-11-23 12:12:16,415 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 12:12:16,415 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 12:12:16,415 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 12:12:16,415 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 12:12:16,416 INFO L133 SettingsManager]: * Trace refinement strategy=WOLF [2018-11-23 12:12:16,416 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 12:12:16,416 INFO L133 SettingsManager]: * Command for external solver=cvc4nyu --tear-down-incremental --rewrite-divk --print-success --lang smt [2018-11-23 12:12:16,416 INFO L133 SettingsManager]: * Logic for external solver=AUFBV [2018-11-23 12:12:16,416 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_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer 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 -> Automizer 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:12:16,445 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 12:12:16,453 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 12:12:16,456 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 12:12:16,457 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 12:12:16,458 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 12:12:16,458 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/../../sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c [2018-11-23 12:12:16,496 INFO L221 CDTParser]: Created temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data/65886b7c4/b287ece73f09486aafe3d3aae176508e/FLAGe6443b3e1 [2018-11-23 12:12:16,825 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 12:12:16,825 INFO L161 CDTParser]: Scanning /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/sv-benchmarks/c/float-benchs/sqrt_poly2_false-unreach-call.c [2018-11-23 12:12:16,829 INFO L355 CDTParser]: About to delete temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data/65886b7c4/b287ece73f09486aafe3d3aae176508e/FLAGe6443b3e1 [2018-11-23 12:12:17,258 INFO L363 CDTParser]: Successfully deleted /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/data/65886b7c4/b287ece73f09486aafe3d3aae176508e [2018-11-23 12:12:17,262 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 12:12:17,263 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 12:12:17,263 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 12:12:17,264 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 12:12:17,266 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 12:12:17,267 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,270 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@9bad2dc and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17, skipping insertion in model container [2018-11-23 12:12:17,270 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,278 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 12:12:17,291 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 12:12:17,431 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 12:12:17,436 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 12:12:17,455 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 12:12:17,472 INFO L195 MainTranslator]: Completed translation [2018-11-23 12:12:17,473 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17 WrapperNode [2018-11-23 12:12:17,473 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 12:12:17,474 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 12:12:17,474 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 12:12:17,474 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 12:12:17,480 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:12:17" (1/1) ... [2018-11-23 12:12:17,487 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:12:17" (1/1) ... [2018-11-23 12:12:17,491 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 12:12:17,491 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 12:12:17,492 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 12:12:17,492 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 12:12:17,498 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,498 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,501 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,502 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,511 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,513 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,514 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (1/1) ... [2018-11-23 12:12:17,517 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 12:12:17,517 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 12:12:17,517 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 12:12:17,517 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 12:12:17,518 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (1/1) ... No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/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:12:17,586 INFO L130 BoogieDeclarations]: Found specification of procedure read~intFLOATTYPE8 [2018-11-23 12:12:17,586 INFO L130 BoogieDeclarations]: Found specification of procedure write~intFLOATTYPE8 [2018-11-23 12:12:17,586 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 12:12:17,586 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 12:12:17,586 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 12:12:17,586 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 12:12:17,586 INFO L130 BoogieDeclarations]: Found specification of procedure #Ultimate.alloc [2018-11-23 12:12:17,586 INFO L130 BoogieDeclarations]: Found specification of procedure read~intINTTYPE4 [2018-11-23 12:12:17,586 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 12:12:17,587 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 12:12:17,587 INFO L130 BoogieDeclarations]: Found specification of procedure __VERIFIER_assert [2018-11-23 12:12:17,587 INFO L138 BoogieDeclarations]: Found implementation of procedure __VERIFIER_assert [2018-11-23 12:12:17,587 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.dealloc [2018-11-23 12:12:17,587 INFO L130 BoogieDeclarations]: Found specification of procedure write~intINTTYPE4 [2018-11-23 12:12:17,587 INFO L130 BoogieDeclarations]: Found specification of procedure sqrt_custom [2018-11-23 12:12:17,587 INFO L138 BoogieDeclarations]: Found implementation of procedure sqrt_custom [2018-11-23 12:12:19,814 WARN L317 ript$VariableManager]: TermVariabe |q#valueAsBitvector| not constructed by VariableManager. Cannot ensure absence of name clashes. [2018-11-23 12:12:20,452 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 12:12:20,452 INFO L280 CfgBuilder]: Removed 0 assue(true) statements. [2018-11-23 12:12:20,453 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:12:20 BoogieIcfgContainer [2018-11-23 12:12:20,453 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 12:12:20,453 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 12:12:20,454 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 12:12:20,456 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 12:12:20,456 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 12:12:17" (1/3) ... [2018-11-23 12:12:20,457 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@7c7da94b and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 12:12:20, skipping insertion in model container [2018-11-23 12:12:20,457 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 12:12:17" (2/3) ... [2018-11-23 12:12:20,457 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@7c7da94b and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 12:12:20, skipping insertion in model container [2018-11-23 12:12:20,457 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:12:20" (3/3) ... [2018-11-23 12:12:20,459 INFO L112 eAbstractionObserver]: Analyzing ICFG sqrt_poly2_false-unreach-call.c [2018-11-23 12:12:20,464 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 12:12:20,469 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 12:12:20,479 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 12:12:20,497 INFO L133 ementStrategyFactory]: Using default assertion order modulation [2018-11-23 12:12:20,497 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 12:12:20,498 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 12:12:20,498 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 12:12:20,498 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 12:12:20,498 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 12:12:20,498 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 12:12:20,498 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 12:12:20,498 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 12:12:20,507 INFO L276 IsEmpty]: Start isEmpty. Operand 25 states. [2018-11-23 12:12:20,510 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 18 [2018-11-23 12:12:20,511 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 12:12:20,511 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:12:20,512 INFO L423 AbstractCegarLoop]: === Iteration 1 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 12:12:20,515 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 12:12:20,516 INFO L82 PathProgramCache]: Analyzing trace with hash 230068877, now seen corresponding path program 1 times [2018-11-23 12:12:20,518 INFO L223 ckRefinementStrategy]: Switched to mode MATHSAT_FPBP [2018-11-23 12:12:20,519 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/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:12:20,526 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 12:12:21,839 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 12:12:23,208 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 12:12:23,393 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~union1;havoc #t~mem0;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~union4;havoc #t~mem3;~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~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=(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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~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=~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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~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=~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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~mem6; [L46] havoc #t~union7; [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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~mem6; [L46] havoc #t~union7; [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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~mem6; [L46] havoc #t~union7; [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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~mem6; [L46] havoc #t~union7; [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:12:23,461 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction CFG 23.11 12:12:23 BoogieIcfgContainer [2018-11-23 12:12:23,461 INFO L132 PluginConnector]: ------------------------ END TraceAbstraction---------------------------- [2018-11-23 12:12:23,461 INFO L113 PluginConnector]: ------------------------Witness Printer---------------------------- [2018-11-23 12:12:23,461 INFO L271 PluginConnector]: Initializing Witness Printer... [2018-11-23 12:12:23,462 INFO L276 PluginConnector]: Witness Printer initialized [2018-11-23 12:12:23,462 INFO L185 PluginConnector]: Executing the observer RCFGCatcher from plugin Witness Printer for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 12:12:20" (3/4) ... [2018-11-23 12:12:23,464 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~union1;havoc #t~mem0;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~union4;havoc #t~mem3;~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~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=(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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~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=~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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~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=~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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~mem6; [L46] havoc #t~union7; [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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~mem6; [L46] havoc #t~union7; [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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~mem6; [L46] havoc #t~union7; [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~union1; [L32] havoc #t~mem0; [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~union4; [L34] havoc #t~mem3; [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~mem6; [L46] havoc #t~union7; [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:12:23,612 INFO L145 WitnessManager]: Wrote witness to /tmp/vcloud-vcloud-master/worker/working_dir_f31be493-3b6c-4699-8fca-6c267f169972/bin-2019/uautomizer/witness.graphml [2018-11-23 12:12:23,612 INFO L132 PluginConnector]: ------------------------ END Witness Printer---------------------------- [2018-11-23 12:12:23,613 INFO L168 Benchmark]: Toolchain (without parser) took 6350.53 ms. Allocated memory was 1.0 GB in the beginning and 1.1 GB in the end (delta: 111.7 MB). Free memory was 948.7 MB in the beginning and 1.0 GB in the end (delta: -86.2 MB). Peak memory consumption was 25.5 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:23,614 INFO L168 Benchmark]: CDTParser took 0.17 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:12:23,614 INFO L168 Benchmark]: CACSL2BoogieTranslator took 209.87 ms. Allocated memory is still 1.0 GB. Free memory was 948.7 MB in the beginning and 932.5 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:12:23,614 INFO L168 Benchmark]: Boogie Procedure Inliner took 17.60 ms. Allocated memory is still 1.0 GB. Free memory is still 932.5 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:12:23,614 INFO L168 Benchmark]: Boogie Preprocessor took 25.34 ms. Allocated memory is still 1.0 GB. Free memory is still 932.5 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 12:12:23,615 INFO L168 Benchmark]: RCFGBuilder took 2935.82 ms. Allocated memory was 1.0 GB in the beginning and 1.1 GB in the end (delta: 111.7 MB). Free memory was 932.5 MB in the beginning and 1.1 GB in the end (delta: -148.6 MB). Peak memory consumption was 15.5 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:23,615 INFO L168 Benchmark]: TraceAbstraction took 3007.58 ms. Allocated memory is still 1.1 GB. Free memory was 1.1 GB in the beginning and 1.0 GB in the end (delta: 32.8 MB). Peak memory consumption was 32.8 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:23,615 INFO L168 Benchmark]: Witness Printer took 150.75 ms. Allocated memory is still 1.1 GB. Free memory was 1.0 GB in the beginning and 1.0 GB in the end (delta: 6.8 MB). Peak memory consumption was 6.8 MB. Max. memory is 11.5 GB. [2018-11-23 12:12:23,617 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.17 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 209.87 ms. Allocated memory is still 1.0 GB. Free memory was 948.7 MB in the beginning and 932.5 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 17.60 ms. Allocated memory is still 1.0 GB. Free memory is still 932.5 MB. There was no memory consumed. Max. memory is 11.5 GB. * Boogie Preprocessor took 25.34 ms. Allocated memory is still 1.0 GB. Free memory is still 932.5 MB. There was no memory consumed. Max. memory is 11.5 GB. * RCFGBuilder took 2935.82 ms. Allocated memory was 1.0 GB in the beginning and 1.1 GB in the end (delta: 111.7 MB). Free memory was 932.5 MB in the beginning and 1.1 GB in the end (delta: -148.6 MB). Peak memory consumption was 15.5 MB. Max. memory is 11.5 GB. * TraceAbstraction took 3007.58 ms. Allocated memory is still 1.1 GB. Free memory was 1.1 GB in the beginning and 1.0 GB in the end (delta: 32.8 MB). Peak memory consumption was 32.8 MB. Max. memory is 11.5 GB. * Witness Printer took 150.75 ms. Allocated memory is still 1.1 GB. Free memory was 1.0 GB in the beginning and 1.0 GB in the end (delta: 6.8 MB). Peak memory consumption was 6.8 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...