module Rational.Unnormalized.Literals where

open import Agda.Builtin.FromNat using (Number; fromNat) public
open import Agda.Builtin.FromNeg
open import Data.Unit using ()
open import Data.Nat as  using (; zero; suc)
import Data.Nat.Literals as 
open import Data.Integer using (; +_)
import Data.Integer.Literals as 
open import Data.Rational.Unnormalised using (ℚᵘ; -_; _/_)

number : Number ℚᵘ
number = record
  { Constraint = λ _  
  ; fromNat    = λ n  + n / suc zero
  }

negative : Negative ℚᵘ
negative = record
  { Constraint = λ _  
  ; fromNeg    = λ n  - ( (+ n) / suc zero)
  }

instance
  NatNumber = ℕ.number
  IntNumber = ℤ.number
  RatNumber = number
  RatNegative = negative

1/1000ℚ = 1 / 1000
2/1000ℚ = 2 / 1000
1/1000000ℚ = 1 / 1000000
2/3000000ℚ = 2 / 3000000

-2ℚ 2ℚ 3ℚ 5ℚ 10ℚ 20ℚ 1000ℚ 2000ℚ 3000ℚ 1000000ℚ 2000000ℚ 3000000ℚ : ℚᵘ
-2ℚ = -2
-1ℚ = -1
2ℚ = 2
3ℚ = 3
5ℚ = 5
10ℚ = 10
20ℚ = 20
1000ℚ = 1000
2000ℚ = 2000
3000ℚ = 3000
1000000ℚ = 1000000
2000000ℚ = 2000000
3000000ℚ = 3000000