-
-
Save jckarter/c31e013215c8e8af59c5b7e99890c834 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol FP {} | |
typealias FPStart = FPSign & FPIntDigit | |
func floats<T: FPStart>(_: T, _ x: Int) -> FP.Type { | |
switch x { | |
case 0: | |
return T.Zero.self | |
case 1: | |
return T.Zero.Point.Zero.self | |
case 2: | |
return T.Zero.self | |
case 3: | |
return T.Zero.E.Zero.self | |
case 4: | |
return T.One.Seven.E.Negative.Three.Eight.self | |
case 5: | |
return T.One.Point.Seven.E.Negative.Three.Eight.self | |
default: | |
return T.Negative.Six.E.Positive.Seven.Nine.self | |
} | |
} | |
protocol FPSign { | |
associatedtype Positive: FPIntDigit | |
associatedtype Negative: FPIntDigit | |
} | |
protocol FPIntDigit: FP { | |
associatedtype Zero: FPIntDigit, FPPoint, FPExponent | |
associatedtype One: FPIntDigit, FPPoint, FPExponent | |
associatedtype Two: FPIntDigit, FPPoint, FPExponent | |
associatedtype Three: FPIntDigit, FPPoint, FPExponent | |
associatedtype Four: FPIntDigit, FPPoint, FPExponent | |
associatedtype Five: FPIntDigit, FPPoint, FPExponent | |
associatedtype Six: FPIntDigit, FPPoint, FPExponent | |
associatedtype Seven: FPIntDigit, FPPoint, FPExponent | |
associatedtype Eight: FPIntDigit, FPPoint, FPExponent | |
associatedtype Nine: FPIntDigit, FPPoint, FPExponent | |
} | |
protocol FPPoint: FP { | |
associatedtype Point: FPFractionDigit, FPExponent | |
} | |
protocol FPFractionDigit: FP { | |
associatedtype Zero: FPFractionDigit, FPExponent | |
associatedtype One: FPFractionDigit, FPExponent | |
associatedtype Two: FPFractionDigit, FPExponent | |
associatedtype Three: FPFractionDigit, FPExponent | |
associatedtype Four: FPFractionDigit, FPExponent | |
associatedtype Five: FPFractionDigit, FPExponent | |
associatedtype Six: FPFractionDigit, FPExponent | |
associatedtype Seven: FPFractionDigit, FPExponent | |
associatedtype Eight: FPFractionDigit, FPExponent | |
associatedtype Nine: FPFractionDigit, FPExponent | |
} | |
protocol FPExponent { | |
associatedtype E: FPExponentSign, FPExponentDigit | |
} | |
protocol FPExponentSign { | |
associatedtype Positive: FPExponentDigit | |
associatedtype Negative: FPExponentDigit | |
} | |
protocol FPExponentDigit: FP { | |
associatedtype Zero: FPExponentDigit | |
associatedtype One: FPExponentDigit | |
associatedtype Two: FPExponentDigit | |
associatedtype Three: FPExponentDigit | |
associatedtype Four: FPExponentDigit | |
associatedtype Five: FPExponentDigit | |
associatedtype Six: FPExponentDigit | |
associatedtype Seven: FPExponentDigit | |
associatedtype Eight: FPExponentDigit | |
associatedtype Nine: FPExponentDigit | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment