@@ -256,32 +256,72 @@ primReal imps = do
256
256
Right (double2DoubleAssumptions, double2Double) <- oneArgFun " Real" " Real"
257
257
Right (doubleIntDoubleAssumptions, doubleIntDouble) <- twoArgFun " Real" " Int" " Real"
258
258
259
- let plusVal = toLunaValue imps ((+) :: Double -> Double -> Double )
260
- timeVal = toLunaValue imps ((*) :: Double -> Double -> Double )
261
- minusVal = toLunaValue imps ((-) :: Double -> Double -> Double )
262
- divVal = toLunaValue imps ((/) :: Double -> Double -> Double )
263
- eqVal = toLunaValue imps ((==) :: Double -> Double -> Bool )
264
- ltVal = toLunaValue imps ((<) :: Double -> Double -> Bool )
265
- gtVal = toLunaValue imps ((>) :: Double -> Double -> Bool )
259
+ let plusVal = toLunaValue imps ((+) :: Double -> Double -> Double )
260
+ timeVal = toLunaValue imps ((*) :: Double -> Double -> Double )
261
+ minusVal = toLunaValue imps ((-) :: Double -> Double -> Double )
262
+ divVal = toLunaValue imps ((/) :: Double -> Double -> Double )
263
+ logBaseVal = toLunaValue imps (flip logBase :: Double -> Double -> Double )
264
+ powVal = toLunaValue imps ((**) :: Double -> Double -> Double )
265
+ eqVal = toLunaValue imps ((==) :: Double -> Double -> Bool )
266
+ ltVal = toLunaValue imps ((<) :: Double -> Double -> Bool )
267
+ gtVal = toLunaValue imps ((>) :: Double -> Double -> Bool )
266
268
roundVal = toLunaValue imps ((\ r prec -> (fromIntegral $ round (r * (10 ^ prec))) / (10 ^ prec :: Double )) :: Double -> Integer -> Double )
267
269
showVal = toLunaValue imps (convert . show :: Double -> Text )
270
+
268
271
sinVal = toLunaValue imps (sin :: Double -> Double )
269
272
cosVal = toLunaValue imps (cos :: Double -> Double )
270
273
tanVal = toLunaValue imps (tan :: Double -> Double )
274
+
275
+ asinVal = toLunaValue imps (asin :: Double -> Double )
276
+ acosVal = toLunaValue imps (acos :: Double -> Double )
277
+ atanVal = toLunaValue imps (atan :: Double -> Double )
278
+
279
+ sinhVal = toLunaValue imps (sinh :: Double -> Double )
280
+ coshVal = toLunaValue imps (cosh :: Double -> Double )
281
+ tanhVal = toLunaValue imps (tanh :: Double -> Double )
282
+
283
+ asinhVal = toLunaValue imps (asinh :: Double -> Double )
284
+ acoshVal = toLunaValue imps (acosh :: Double -> Double )
285
+ atanhVal = toLunaValue imps (atanh :: Double -> Double )
286
+
287
+ expVal = toLunaValue imps (exp :: Double -> Double )
288
+ sqrtVal = toLunaValue imps (sqrt :: Double -> Double )
289
+ logVal = toLunaValue imps (log :: Double -> Double )
271
290
uminusVal = toLunaValue imps ((* (- 1 )) :: Double -> Double )
272
- return $ Map. fromList [ (" primRealAdd" , Function boxed3Doubles plusVal boxed3DoublesAssumptions )
273
- , (" primRealMultiply" , Function boxed3Doubles timeVal boxed3DoublesAssumptions )
274
- , (" primRealSubtract" , Function boxed3Doubles minusVal boxed3DoublesAssumptions )
275
- , (" primRealDivide" , Function boxed3Doubles divVal boxed3DoublesAssumptions )
276
- , (" primRealEquals" , Function double2Bool eqVal double2BoolAssumptions )
277
- , (" primRealLt" , Function double2Bool ltVal double2BoolAssumptions )
278
- , (" primRealGt" , Function double2Bool gtVal double2BoolAssumptions )
279
- , (" primRealRound" , Function doubleIntDouble roundVal doubleIntDoubleAssumptions)
280
- , (" primRealToText" , Function double2text showVal double2TextAssumptions )
281
- , (" primRealSin" , Function double2Double sinVal double2DoubleAssumptions )
282
- , (" primRealCos" , Function double2Double cosVal double2DoubleAssumptions )
283
- , (" primRealTan" , Function double2Double tanVal double2DoubleAssumptions )
284
- , (" primRealNegate" , Function double2Double uminusVal double2DoubleAssumptions )
291
+ return $ Map. fromList [ (" primRealAdd" , Function boxed3Doubles plusVal boxed3DoublesAssumptions )
292
+ , (" primRealMultiply" , Function boxed3Doubles timeVal boxed3DoublesAssumptions )
293
+ , (" primRealSubtract" , Function boxed3Doubles minusVal boxed3DoublesAssumptions )
294
+ , (" primRealDivide" , Function boxed3Doubles divVal boxed3DoublesAssumptions )
295
+ , (" primRealPow" , Function boxed3Doubles powVal boxed3DoublesAssumptions )
296
+ , (" primRealLog" , Function boxed3Doubles logBaseVal boxed3DoublesAssumptions )
297
+
298
+ , (" primRealEquals" , Function double2Bool eqVal double2BoolAssumptions )
299
+ , (" primRealLt" , Function double2Bool ltVal double2BoolAssumptions )
300
+ , (" primRealGt" , Function double2Bool gtVal double2BoolAssumptions )
301
+
302
+ , (" primRealRound" , Function doubleIntDouble roundVal doubleIntDoubleAssumptions)
303
+ , (" primRealToText" , Function double2text showVal double2TextAssumptions )
304
+
305
+ , (" primRealSin" , Function double2Double sinVal double2DoubleAssumptions )
306
+ , (" primRealCos" , Function double2Double cosVal double2DoubleAssumptions )
307
+ , (" primRealTan" , Function double2Double tanVal double2DoubleAssumptions )
308
+
309
+ , (" primRealAsin" , Function double2Double asinVal double2DoubleAssumptions )
310
+ , (" primRealAcos" , Function double2Double acosVal double2DoubleAssumptions )
311
+ , (" primRealAtan" , Function double2Double atanVal double2DoubleAssumptions )
312
+
313
+ , (" primRealSinh" , Function double2Double sinhVal double2DoubleAssumptions )
314
+ , (" primRealCosh" , Function double2Double coshVal double2DoubleAssumptions )
315
+ , (" primRealTanh" , Function double2Double tanhVal double2DoubleAssumptions )
316
+
317
+ , (" primRealAsinh" , Function double2Double asinhVal double2DoubleAssumptions )
318
+ , (" primRealAcosh" , Function double2Double acoshVal double2DoubleAssumptions )
319
+ , (" primRealAtanh" , Function double2Double atanhVal double2DoubleAssumptions )
320
+
321
+ , (" primRealExp" , Function double2Double expVal double2DoubleAssumptions )
322
+ , (" primRealLn" , Function double2Double logVal double2DoubleAssumptions )
323
+ , (" primRealSqrt" , Function double2Double sqrtVal double2DoubleAssumptions )
324
+ , (" primRealNegate" , Function double2Double uminusVal double2DoubleAssumptions )
285
325
]
286
326
287
327
primInt :: Imports -> IO (Map Name Function )
@@ -479,6 +519,7 @@ prelude imps = mdo
479
519
mod <- preludeArithOp " %"
480
520
plus <- preludeArithOp " +"
481
521
div <- preludeArithOp " /"
522
+ pow <- preludeArithOp " ^"
482
523
uminus <- preludeUnaryOp " negate"
483
524
gt <- preludeCmpOp importBoxes " >"
484
525
lt <- preludeCmpOp importBoxes " <"
@@ -489,7 +530,7 @@ prelude imps = mdo
489
530
intFuns <- primInt importBoxes
490
531
textFuns <- primText importBoxes
491
532
binFuns <- primBinary importBoxes
492
- let opMap = Map. fromList [(" +" , plus), (" -" , minus), (" *" , times), (" >" , gt), (" <" , lt), (" >=" , gte), (" <=" , lte), (" ==" , eq), (" %" , mod ), (" /" , div ), (" #uminus#" , uminus)]
533
+ let opMap = Map. fromList [(" +" , plus), (" -" , minus), (" *" , times), (" ^ " , pow), ( " >" , gt), (" <" , lt), (" >=" , gte), (" <=" , lte), (" ==" , eq), (" %" , mod ), (" /" , div ), (" #uminus#" , uminus)]
493
534
funMap = Map. unions [realFuns, intFuns, textFuns, binFuns, opMap]
494
535
let importBoxes = unionImports imps $ Imports def (WithDocumentation def . Right <$> funMap)
495
536
return funMap
0 commit comments