diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/.DS_Store differ diff --git a/package.json b/package.json index 2ca0a1f..316a181 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "index.js", "scripts": { "build": "mkdir -p build && go build -o build/argon ./src", - "dev": "nodemon -x go run ./src/. --signal SIGKILL -e go --verbose" + "dev": "nodemon -x go run ./src/. --signal SIGKILL -e go --verbose", + "start": "go run ./src/." }, "repository": { "type": "git", diff --git a/src/main.go b/src/main.go index c048119..1b8c3d8 100644 --- a/src/main.go +++ b/src/main.go @@ -3,5 +3,6 @@ package main import "fmt" func main() { + translate("") fmt.Println("hello world") } diff --git a/src/number.go b/src/number.go new file mode 100644 index 0000000..2141e4c --- /dev/null +++ b/src/number.go @@ -0,0 +1,31 @@ +package main + +import ( + "fmt" + "math/big" +) + +// a number type +type number = *big.Rat + +// create a number from two integers +var createNumber = big.NewRat + +// create a new number type +func newNumber() *big.Rat { + return new(big.Rat) +} + +// converts a string into a number +func stringToNumber(str string) (*big.Rat, bool) { + return newNumber().SetString(str) +} + +// converts a number type to a string +func numberToString(num number, fraction bool) string { + if fraction { + return num.RatString() + } + x, _ := num.Float64() + return fmt.Sprint(x) +} diff --git a/src/translate.go b/src/translate.go new file mode 100644 index 0000000..b218e01 --- /dev/null +++ b/src/translate.go @@ -0,0 +1,16 @@ +package main + +import ( + "fmt" +) + +func translate(code string) { + a := createNumber(7, 1) + b, worked := stringToNumber("1e-1") + if worked { + output := newNumber().Mul(a, b) + output.Add(output, a) + output.Sub(output, a) + fmt.Println(numberToString(output, true)) + } +}