Open gitlearning-basic opened 2 years ago
Hi! When Daisy says "Something bad happened", it means an exception was thrown that is hidden from the user. If you want to see it, you can comment out lines 189-192 in Main.scala, so that the exception won't be caught.
The options that we used for our experiments are in the https://github.com/malyzajko/daisy/blob/approx/scripts/approx/ folder, e.g. the rundaisy.sh script will just run Daisy. The scripts synthesis_*.sh will run our entire experiments, including evaluation/compilation of the generated files with Xilinx, but you could comment out that part, or have a look at the options that we used.
In your second run, it did run Metalibm, but this is different code and approach than what was in our ATVA'19 paper. If you want to use the --metalibm flag (from our CAV'19), I think master is probably better, as that code was updated later.
Thank you for your detailed reply. I am now trying to run the code of the main branch. The use of metalibm has bothered me for several days, It would be better if you could provide a Linux image file with the environment installed.
I unfortunately do not have such a Linux image, nor a Linux machine right now. If it is easier, feel free to contact me via email (eva@mpi-sws.org) to try to debug the issues.
OK,Thank you very much. In the branch of approx, the readme file in Scripts/approx folder mention that "The scripts were successfully run in the Ubuntu 18.1 virtual machine", maybe the author of ATVA'19 paper can offer Linux image(about VMware or VisualBox) about the work which is exactly what I want.
All we can do is follow exactly the instructions in the artifact evaluation README file: https://github.com/malyzajko/daisy/tree/approx/scripts/approx/README.md, using the VM from Zenodo. Did you try this, and did this fail at some point?
Thank you for trying to solve the problem. I've tried, and the reason for the failure is similar to that described at the beginning of the issue.
Metalibm couldn't compute the approximation.
run testcases/transcendentals/TransBenchsErrorBoundsLarge.scala --functions=sinxx10 --metalibm --codegen --lang=C [info] Running daisy.Main testcases/transcendentals/TransBenchsErrorBoundsLarge.scala --functions=sinxx10 --metalibm --codegen --lang=C [info] [ Info ] [info] [ Info ] **** Starting Daisy **** [info] [ Info ] [info] [ Info ] Starting Scalac Extraction phase [info] [ Info ] [info] [ Info ] Starting Specs processing phase [info] [ Info ] [info] [ Info ] Starting Expression decomposition for Metalibm phase [info] [ Info ] [info] [ Info ] Starting Dataflow Error phase [info] [ Info ] using interval for ranges, affine for errors [info] [ Info ] analyzing fnc: sinxx10 [info] [ Info ] error analysis for uniform Float64 precision [info] [ Info ] [info] [ Info ] Starting Metalibm phase [info] [ Info ] [info] [ Info ] sinxx10 [info] [ Info ] [info] [ Info ] Try to approximate sin(x) in [-3.0, 3.0]: [info] total: 3.3324814221991045e-10, localError: 1.4002022782349177e-12 [info] [Warning ] Metalibm couldn't compute the approximation. [info] [ Info ] approximation for degree: 12 timed out [info] [ Info ] best approximation found for degree: 24, timing: 0.0 [info] [ Info ] Try to approximate sin(x) in [-3.0, 3.0]: [info] total: 3.3324814221991045e-10, localError: 1.4002022782349177e-12 [info] [Warning ] Metalibm couldn't compute the approximation. [info] [ Info ] approximation for degree: 12 timed out [info] [ Info ] best approximation found for degree: 24, timing: 0.0 [info] [ Info ] Try to approximate sin(x) in [-3.0, 3.0]: [info] total: 3.3324814221991045e-10, localError: 1.4002022782349177e-12 [info] [Warning ] Metalibm couldn't compute the approximation. [info] [ Info ] approximation for degree: 12 timed out [info] [ Info ] best approximation found for degree: 24, timing: 0.0 [info] [ Fatal ] No approximation was generated from Metalibm! Aborting. [info] [ Info ] Something really bad happened. Cannot continue. [info] [ Info ] time: [info] [ Info ] metalibm: -1652019984608 ms, analysis: 478 ms, decomposition: 48 ms, specs: 16 ms, frontend: 4642 ms, total: 5419 ms
That is not an installation issue then. You are not running the code from the ATVA'19 paper with the command you are using (the --metalibm command is running the code from our CAV'19 paper on floating-point approximations, both use Metalibm).
If you want to run the ATVA code, which is the one the approx branch is meant for, you need to run e.g.: run testcases/approx/Benchmarks_large.scala --rangeMethod=interval --errorMethod=affine --approx --apfixed --lang=C --precision=Fixed64 --cost=combined --choosePrecision=fixed --functions=sinxx10
Note, you need to use --approx flag. Also note the different benchmark file that was used for the ATVA experiments. Please see this folder for the full scripts that were used for the experiments in the ATVA paper: https://github.com/malyzajko/daisy/tree/approx/scripts/approx (There is also a README file that was used for artifact evaluation.)
However, one thing that may have happened, is that for our CAV'19 and ATVA'19 papers, we use two different (modified) versions of Metalibm. Hence, if you installed the version for the --metalibm flag, then it will likely not work with the --approx flag. The installation instructions here (https://github.com/malyzajko/daisy/blob/approx/scripts/approx/README.md) need to be used.
OK, thanks. I'll try it.
I run the code of ATVA'19 paper, the error is as follows. How can I know the specific error.
run testcases/approx/Benchmarks_large.scala --approx --apfixed --lang=C --cost=combined --functions=sinxx10 [info] Running daisy.Main testcases/approx/Benchmarks_large.scala --approx --apfixed --lang=C --cost=combined --functions=sinxx10 [info] [ Info ] [info] [ Info ] **** Starting Daisy **** [info] [ Info ] [info] [ Info ] Starting Scalac Extraction phase [info] [ Info ] [info] [ Info ] Starting Specs processing phase [info] [ Info ] [info] [ Info ] Starting Three-address form transformer phase [info] [ Info ] [info] [ Info ] Starting Constant transformer phase [info] [ Info ] [info] [ Info ] Starting Dataflow Error phase [info] [ Info ] using interval for ranges, affine for errors [info] [ Info ] analyzing fnc: sinxx10 [info] [ Info ] error analysis for uniform Float64 precision [info] [ Info ] [info] [ Info ] Starting Approximation Generation phase [info] [ Info ] approximating fnc: sinxx10 subexpression sin(x) [info] [ Info ] Function call sin(x). Assigned precision Double [info] [ Info ] Assigned approximation error budget 5.551115123125783e-17, roundoff error budget 5.551115123125783e-17 [info] [ Info ] Something really bad happened. Cannot continue. [info] [ Info ] time: [info] [ Info ] approximation: -1652194197580 ms, analysis: 289 ms, const-trans: 2 ms, tac: 3 ms, specs: 10 ms, frontend: 3845 ms, total: 4260 ms
Comment out the lines 189-192 in Main.scala, then you will see the specific error.
OK, thanks.
I have successfully run the code of the main branch. Thank you very much for your help, I appreciate it. The error of the approx branch is as follows:I don't care about it now, ha ha ha.
run testcases/approx/Benchmarks_large.scala --approx --codegen --lang=C --functions=sinxx10 [info] Running daisy.Main testcases/approx/Benchmarks_large.scala --approx --codegen --lang=C --functions=sinxx10 [info] [ Info ] [info] [ Info ] **** Starting Daisy **** [info] [ Info ] [info] [ Info ] Starting Scalac Extraction phase [info] [ Info ] [info] [ Info ] Starting Specs processing phase [info] [ Info ] [info] [ Info ] Starting Three-address form transformer phase [info] [ Info ] [info] [ Info ] Starting Constant transformer phase [info] [ Info ] [info] [ Info ] Starting Dataflow Error phase [info] [ Info ] using interval for ranges, affine for errors [info] [ Info ] analyzing fnc: sinxx10 [info] [ Info ] error analysis for uniform Float64 precision [info] [ Info ] [info] [ Info ] Starting Approximation Generation phase [info] [ Info ] approximating fnc: sinxx10 subexpression sin(x) [info] [ Info ] Function call sin(x). Assigned precision Double [info] [ Info ] Assigned approximation error budget 5.551115123125783e-17, roundoff error budget 5.551115123125783e-17 [error] Exception in thread "main" java.lang.Exception: Failed to parse metalibm output: string matching regex
[\s\S]*The implementation can be found in file: ' expected but
W' found [error] at daisy.tools.MetalibmUtils$Extractor$.getApproxFilename(MetalibmUtils.scala:24) [error] at daisy.opt.ApproxPhase$.callMetalibm(ApproxPhase.scala:447) [error] at daisy.opt.ApproxPhase$.feedbackLoop$1(ApproxPhase.scala:247) [error] at daisy.opt.ApproxPhase$.transformElementaryFunction$1(ApproxPhase.scala:349) [error] at daisy.opt.ApproxPhase$.daisy$opt$ApproxPhase$$find$1(ApproxPhase.scala:187) [error] at daisy.opt.ApproxPhase$.daisy$opt$ApproxPhase$$find$1(ApproxPhase.scala:153) [error] at daisy.opt.ApproxPhase$.daisy$opt$ApproxPhase$$find$1(ApproxPhase.scala:154) [error] at daisy.opt.ApproxPhase$.daisy$opt$ApproxPhase$$find$1(ApproxPhase.scala:154) [error] at daisy.opt.ApproxPhase$.daisy$opt$ApproxPhase$$find$1(ApproxPhase.scala:154) [error] at daisy.opt.ApproxPhase$.daisy$opt$ApproxPhase$$find$1(ApproxPhase.scala:154) [error] at daisy.opt.ApproxPhase$.daisy$opt$ApproxPhase$$find$1(ApproxPhase.scala:154) [error] at daisy.opt.ApproxPhase$.daisy$opt$ApproxPhase$$find$1(ApproxPhase.scala:154) [error] at daisy.opt.ApproxPhase$.findReplace(ApproxPhase.scala:352) [error] at daisy.opt.ApproxPhase$$anonfun$1.apply(ApproxPhase.scala:67) [error] at daisy.opt.ApproxPhase$$anonfun$1.apply(ApproxPhase.scala:55) [error] at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234) [error] at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234) [error] at scala.collection.immutable.List.foreach(List.scala:392) [error] at scala.collection.TraversableLike$class.map(TraversableLike.scala:234) [error] at scala.collection.immutable.List.map(List.scala:296) [error] at daisy.opt.ApproxPhase$.runPhase(ApproxPhase.scala:55) [error] at daisy.DaisyPhase$class.run(DaisyPhase.scala:28) [error] at daisy.opt.ApproxPhase$.run(ApproxPhase.scala:31) [error] at daisy.opt.ApproxPhase$.run(ApproxPhase.scala:31) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:11) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:11) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:11) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:13) [error] at daisy.Main$.interfaceMain(Main.scala:175) [error] at daisy.Main$.main(Main.scala:204) [error] at daisy.Main.main(Main.scala) java.lang.RuntimeException: Nonzero exit code returned from runner: 1 at scala.sys.package$.error(package.scala:27) [trace] Stack trace suppressed: run last compile:run for the full output. [error] (compile:run) Nonzero exit code returned from runner: 1 [error] Total time: 7 s, completed 2022-5-10 23:40:56root@xxx-computer:~/daisy/metalibm# ./metalibm.sollya problemdefForDaisy_1652194078.sollya Warning (98): the file "///root/daisy/metalibmconfig.sollya" could not be opened for reading. This command will have no effect. Warning (98): the file "///root/daisy/metalibmimplement.sollya" could not be opened for reading. This command will have no effect. Warning (112): the identifier "v" is neither assigned to, nor bound to a library function nor external procedure, nor equal to the current free variable. Will interpret "v" as "x". Warning (112): the identifier "implementationFile" is neither assigned to, nor bound to a library function nor external procedure, nor equal to the current free variable. Will interpret "implementationFile" as "x". Warning (112): the identifier "getUniqueToken" is neither assigned to, nor bound to a library function nor external procedure, nor equal to the current free variable. Will interpret "getUniqueToken" as "x". Warning (112): the identifier "getUniqueToken" is neither assigned to, nor bound to a library function nor external procedure, nor equal to the current free variable. Will interpret "getUniqueToken" as "x". Warning (128): at least one of the given expressions or a subexpression is not correctly typed or its evaluation has failed because of some error on a side-effect. Warning (112): the identifier "getUniqueToken" is neither assigned to, nor bound to a library function nor external procedure, nor equal to the current free variable. Will interpret "getUniqueToken" as "x". Warning (112): the identifier "getUniqueToken" is neither assigned to, nor bound to a library function nor external procedure, nor equal to the current free variable. Will interpret "getUniqueToken" as "x". Warning (128): at least one of the given expressions or a subexpression is not correctly typed
I suspect this error is because you have the main-branch version of Metalibm installed, and not the one needed for the approx branch - Daisy cannot parse the output produced from Metalibm, which is the part (among others) that we modified for the ATVA paper.
Before installing Daisy, I already installed metalibm in Linux, so the problem may be here.I really very much appreciate your guidance and help.
Hello,I have successfully run the code of the main branch. Now I want to use float16 or float32 or float64 variables to perform mixed precision optimization on the expressions in the file testcases/approx/Benchmarks_large.scala, and the optimization of elementary functions is also needed. What command should I use. I don't want to use fixed-point precision optimization, just change the variable type to float16 or float32 or float64.
sbt:Daisy> run testcases/approx/Benchmarks_large.scala --approx --apfixed --lang=C --mixed-tuning --functions=rodriguesRotation [info] running (fork) daisy.Main testcases/approx/Benchmarks_large.scala --approx --apfixed --lang=C --mixed-tuning --functions=rodriguesRotation [info] [ Info ] [info] [ Info ] **** Starting Daisy **** [info] [ Info ] [info] [ Info ] Starting Scala extraction phase [info] [ Info ] [info] [ Info ] Starting Specs processing phase [info] [ Info ] [info] [ Info ] Starting TAC transformer phase [info] [ Info ] [info] [ Info ] Starting Constant transformer phase [info] [ Info ] [info] [ Info ] Starting Range phase [info] [ Info ] [info] [ Info ] Starting mixed-precision optimization phase [info] [ Info ] Optimisation method: delta [info] [ Info ] Analyzing path: List() [info] [ Info ] No mixed-precision optimization needed for rodriguesRotation - lowest (Float32) is sufficient [info] [ Info ] [info] [ Info ] Starting Approximation Generation phase [info] [ Info ] approximating fnc: rodriguesRotation subexpression cosf(theta) [info] [ Info ] Function call cosf(theta). Assigned precision Float [info] [ Info ] Assigned approximation error budget 5.9604644775390625e-08, roundoff error budget 5.9604644775390625e-08 [info] [ Info ] [info] [ Info ] Starting TAC transformer phase [info] [ Info ] [info] [ Info ] Starting Constant transformer phase [info] [ Info ] [info] [ Info ] Starting Range phase [info] [ Info ] [info] [ Info ] Starting mixed-precision optimization phase [info] [ Info ] Optimisation method: delta [info] [ Info ] Analyzing path: List((xh < f_approx_4_1657441851_ae5d59ffaac650fe0c3988759d7d4356splitter_splitpoint)) [info] [ Info ] Optimizing mixed-precision for cos_0_0to1_5_err5_9604644775390625em08... [info] [ Info ] Lowest possible uniform precision: Float64 [info] [ Info ] initial Cost: 23.0842 - final cost: 23.0842 [info] [ Info ] number of valid type configs: ---- 6, out of 28 unique configs seen [info] [ Info ] Analyzing path: List((xh ≥ f_approx_4_1657441851_ae5d59ffaac650fe0c3988759d7d4356splitter_splitpoint)) [info] [ Info ] Optimizing mixed-precision for cos_0_0to1_5_err5_9604644775390625em08... [info] [ Info ] Lowest possible uniform precision: Float64 [info] [ Info ] initial Cost: 19.8742 - final cost: 19.8742 [info] [ Info ] number of valid type configs: ---- 8, out of 16 unique configs seen [info] [ Info ] [info] [ Info ] Starting Roundoff phase [error] Exception in thread "main" java.lang.Exception: Not supported [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:502) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.$anonfun$evalRoundoff$5(RoundoffEvaluators.scala:469) [error] at daisy.utils.CachingMap.getOrAdd(CachingMap.scala:8) [error] at daisy.tools.RoundoffEvaluators.eval$1(RoundoffEvaluators.scala:179) [error] at daisy.tools.RoundoffEvaluators.evalRoundoff(RoundoffEvaluators.scala:534) [error] at daisy.tools.RoundoffEvaluators.evalRoundoff$(RoundoffEvaluators.scala:140) [error] at daisy.analysis.AbsErrorPhase$.evalRoundoff(AbsErrorPhase.scala:29) [error] at daisy.analysis.AbsErrorPhase$.computeRoundoffError(AbsErrorPhase.scala:81) [error] at daisy.analysis.AbsErrorPhase$.$anonfun$runPhase$2(AbsErrorPhase.scala:43) [error] at scala.collection.immutable.List.map(List.scala:246) [error] at scala.collection.immutable.List.map(List.scala:79) [error] at daisy.analysis.AbsErrorPhase$.runPhase(AbsErrorPhase.scala:43) [error] at daisy.DaisyPhase.run(DaisyPhase.scala:28) [error] at daisy.DaisyPhase.run$(DaisyPhase.scala:24) [error] at daisy.analysis.AbsErrorPhase$.run(AbsErrorPhase.scala:29) [error] at daisy.analysis.AbsErrorPhase$.run(AbsErrorPhase.scala:29) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:13) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:13) [error] at daisy.opt.ApproxPhase$.feedbackLoop$1(ApproxPhase.scala:294) [error] at daisy.opt.ApproxPhase$.transformElementaryFunction$1(ApproxPhase.scala:356) [error] at daisy.opt.ApproxPhase$.find$1(ApproxPhase.scala:194) [error] at daisy.opt.ApproxPhase$.find$1(ApproxPhase.scala:160) [error] at daisy.opt.ApproxPhase$.find$1(ApproxPhase.scala:161) [error] at daisy.opt.ApproxPhase$.findReplace(ApproxPhase.scala:359) [error] at daisy.opt.ApproxPhase$.$anonfun$runPhase$1(ApproxPhase.scala:67) [error] at scala.collection.immutable.List.map(List.scala:246) [error] at scala.collection.immutable.List.map(List.scala:79) [error] at daisy.opt.ApproxPhase$.runPhase(ApproxPhase.scala:55) [error] at daisy.DaisyPhase.run(DaisyPhase.scala:28) [error] at daisy.DaisyPhase.run$(DaisyPhase.scala:24) [error] at daisy.opt.ApproxPhase$.run(ApproxPhase.scala:28) [error] at daisy.opt.ApproxPhase$.run(ApproxPhase.scala:28) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:11) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:11) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:11) [error] at daisy.Pipeline$$anon$1.run(Pipeline.scala:13) [error] at daisy.Main$.interfaceMain(Main.scala:167) [error] at daisy.Main$.main(Main.scala:195) [error] at daisy.Main.main(Main.scala) [error] Nonzero exit code returned from runner: 1 [error] (Compile / run) Nonzero exit code returned from runner: 1 [error] Total time: 15 s, completed 2022-7-10 16:30:57 sbt:Daisy>
Hi! The --approx flag only works with fixed-point arithmetic (as does --apfixed). If you want to approximate elementary functions, and do mixed-precision tuning, the flags that you are looking for are: "--metalibm --mixed-tuning --lang=C"
hello, I want to use the code of branch "approx" and I install all the environment.
But when I use command
run --approx --apfixed --lang=C --precision=Float64 --functions=axisRotationX testcases/approx/Benchmarks_large.scala --no-refinement
, an error occurred.I have install metalibm.
How can I know the specific error?