fact: Fixpoint CArithExprToTree t := match t with | CInt n => Tree.Econst (Tree.Int n) | CBinFl n1 n2 => Tree.Ebinary Tree.Mul (Tree.Econst (Tree.Int n1)) (Tree.Econst (Tree.Bpow 2 n2)) | CVar n => Tree.Evar n | COp OP t1 t2 => let u1 := CArithExprToTree t1 in let u2 := CArithExprToTree t2 in match OP with | CADD => Tree.Ebinary Tree.Add u1 u2 | CSUB => Tree.Ebinary Tree.Sub u1 u2 | CMUL => Tree.Ebinary Tree.Mul u1 u2 | CFLTDIV => Tree.Ebinary Tree.Div u1 u2 | CINTDIV => Tree.Eunary (Tree.Nearbyint Basic.rnd_ZR) (Tree.Ebinary Tree.Div u1 u2) end | CRnd md t' => Tree.Eunary (Tree.RoundFlt (rounding_mode_of_mode md) Rrnd.emin Format64.prec) (CArithExprToTree t') | CNearbyint t' => Tree.Eunary (Tree.Nearbyint Basic.rnd_NE) (CArithExprToTree t') | CTrunc t' => Tree.Eunary (Tree.Nearbyint Basic.rnd_ZR) (CArithExprToTree t') | CLdexp t' p => Tree.Econst (Tree.Int 0) | CSqrt t' => Tree.Eunary Tree.Sqrt (CArithExprToTree t') end.
imports: Coq(Bool Floats Reals List Lia Lra) Flocq(Core PrimFloat BinarySingleNaN Operations) Specific_bigint Specific_ops Interval_helper Float_full Prog Lang_expr