forked from microsoft/typechat.net
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMathAPI.cs
62 lines (47 loc) · 1.61 KB
/
MathAPI.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright (c) Microsoft. All rights reserved.
using Microsoft.TypeChat.Schema;
namespace Math;
[Comment("Schema for writing programs that evaluate Math expressions")]
public interface IMathAPI
{
[Comment("x + y")]
double add(double x, double y);
[Comment("x - y")]
double sub(double x, double y);
[Comment("x multiplied by y")]
double mul(double x, double y);
[Comment("x divided by y")]
double div(double x, double y);
[Comment("x modulo y")]
double mod(double x, double y);
[Comment("min of two numbers")]
double min(double x, double y);
[Comment("max of two numbers")]
double max(double x, double y);
[Comment("-x")]
double neg(double x);
[Comment("id function. Return x")]
double id(double x);
[Comment("Square root")]
double sqrt(double x);
[Comment("x raised to y")]
double power(double x, double y);
}
/// <summary>
/// Any implementation of the Math API
/// </summary>
public class MathAPI : IMathAPI
{
public MathAPI() { }
public double add(double x, double y) => x + y;
public double sub(double x, double y) => x - y;
public double mul(double x, double y) => x * y;
public double div(double x, double y) => x / y;
public double neg(double x) => -x;
public double id(double x) => x;
public double mod(double x, double y) => x % y;
public double min(double x, double y) => System.Math.Min(x, y);
public double max(double x, double y) => System.Math.Max(x, y);
public double sqrt(double x) => System.Math.Sqrt(x);
public double power(double x, double y) => System.Math.Pow(x, y);
}