@@ -1194,7 +1194,7 @@ <h2>Declaration<a class="headerlink" href="#declaration" title="Permalink to thi
1194
1194
< p > < code class ="docutils literal notranslate "> < span class ="pre "> AFix.SQ(8</ span > < span class ="pre "> bits,</ span > < span class ="pre "> 4</ span > < span class ="pre "> bits)</ span > </ code > will have a range of -4096 (-256) to 4095 (255.9375)</ p >
1195
1195
< p > < code class ="docutils literal notranslate "> < span class ="pre "> AFix.U(8</ span > < span class ="pre "> exp,</ span > < span class ="pre "> 4</ span > < span class ="pre "> exp)</ span > </ code > will have a range of 0 to 256</ p >
1196
1196
< p > Custom range < code class ="docutils literal notranslate "> < span class ="pre "> AFix</ span > </ code > values can be created be directly instantiating the class.</ p >
1197
- < div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> AFix</ span > < span class ="p "> (</ span > < span class ="kd "> val</ span > < span class ="w "> </ span > < span class ="n "> maxValue</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> BigInt</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="kd "> val</ span > < span class ="w "> </ span > < span class ="n "> minValue</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> BigInt</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="kd "> val</ span > < span class ="w "> </ span > < span class ="n "> exp</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> ExpNumber</ span > < span class ="p "> )</ span >
1197
+ < div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> AFix</ span > < span class ="p "> (</ span > < span class ="kd "> val</ span > < span class ="w "> </ span > < span class ="n "> maxValue</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> BigInt</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="kd "> val</ span > < span class ="w "> </ span > < span class ="n "> minValue</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> BigInt</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="kd "> val</ span > < span class ="w "> </ span > < span class ="n "> exp</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> ExpNumber</ span > < span class ="p "> )</ span > < span class =" w " > </ span >
1198
1198
1199
1199
< span class ="k "> new</ span > < span class ="w "> </ span > < span class ="nc "> AFix</ span > < span class ="p "> (</ span > < span class ="mi "> 4096</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="mi "> 0</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="mi "> 0</ span > < span class ="w "> </ span > < span class ="n "> exp</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="c1 "> // [0 to 4096, 2^0]</ span >
1200
1200
< span class ="k "> new</ span > < span class ="w "> </ span > < span class ="nc "> AFix</ span > < span class ="p "> (</ span > < span class ="mi "> 256</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="o "> -</ span > < span class ="mi "> 256</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="o "> -</ span > < span class ="mi "> 2</ span > < span class ="w "> </ span > < span class ="n "> exp</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="c1 "> // [-256 to 256, 2^-2]</ span >
@@ -1241,12 +1241,12 @@ <h2>Mathematical Operations<a class="headerlink" href="#mathematical-operations"
1241
1241
< section id ="inequality-operations ">
1242
1242
< h2 > Inequality Operations< a class ="headerlink " href ="#inequality-operations " title ="Permalink to this heading "> </ a > </ h2 >
1243
1243
< p > < code class ="docutils literal notranslate "> < span class ="pre "> AFix</ span > </ code > supports standard inequality operations.</ p >
1244
- < div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> ===</ span > < span class ="w "> </ span > < span class ="nc "> B</ span >
1245
- < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> =\=</ span > < span class ="w "> </ span > < span class ="nc "> B</ span >
1246
- < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> <</ span > < span class ="w "> </ span > < span class ="nc "> B</ span >
1247
- < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> <=</ span > < span class ="w "> </ span > < span class ="nc "> B</ span >
1248
- < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> ></ span > < span class ="w "> </ span > < span class ="nc "> B</ span >
1249
- < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> >=</ span > < span class ="w "> </ span > < span class ="nc "> B</ span >
1244
+ < div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> ===</ span > < span class ="w "> </ span > < span class ="nc "> B</ span > < span class =" w " > </ span >
1245
+ < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> =\=</ span > < span class ="w "> </ span > < span class ="nc "> B</ span > < span class =" w " > </ span >
1246
+ < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> <</ span > < span class ="w "> </ span > < span class ="nc "> B</ span > < span class =" w " > </ span >
1247
+ < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> <=</ span > < span class ="w "> </ span > < span class ="nc "> B</ span > < span class =" w " > </ span >
1248
+ < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> ></ span > < span class ="w "> </ span > < span class ="nc "> B</ span > < span class =" w " > </ span >
1249
+ < span class ="nc "> A</ span > < span class ="w "> </ span > < span class ="o "> >=</ span > < span class ="w "> </ span > < span class ="nc "> B</ span > < span class =" w " > </ span >
1250
1250
</ pre > </ div >
1251
1251
</ div >
1252
1252
< p > Warning: Operations which are out of range at compile time will be optimized out!</ p >
@@ -1272,17 +1272,17 @@ <h2>Saturation and Rounding<a class="headerlink" href="#saturation-and-rounding"
1272
1272
</ div >
1273
1273
< p > < code class ="docutils literal notranslate "> < span class ="pre "> AFix</ span > </ code > rounding modes:</ p >
1274
1274
< div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="c1 "> // The following require exp < 0</ span >
1275
- < span class ="p "> .</ span > < span class ="n "> floor</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="n "> or</ span > < span class ="w "> </ span > < span class ="p "> .</ span > < span class ="n "> truncate</ span > < span class ="p "> ()</ span >
1276
- < span class ="p "> .</ span > < span class ="n "> ceil</ span > < span class ="p "> ()</ span >
1277
- < span class ="p "> .</ span > < span class ="n "> floorToZero</ span > < span class ="p "> ()</ span >
1278
- < span class ="p "> .</ span > < span class ="n "> ceilToInf</ span > < span class ="p "> ()</ span >
1275
+ < span class ="p "> .</ span > < span class ="n "> floor</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="n "> or</ span > < span class ="w "> </ span > < span class ="p "> .</ span > < span class ="n "> truncate</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1276
+ < span class ="p "> .</ span > < span class ="n "> ceil</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1277
+ < span class ="p "> .</ span > < span class ="n "> floorToZero</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1278
+ < span class ="p "> .</ span > < span class ="n "> ceilToInf</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1279
1279
< span class ="c1 "> // The following require exp < -1</ span >
1280
- < span class ="p "> .</ span > < span class ="n "> roundHalfUp</ span > < span class ="p "> ()</ span >
1281
- < span class ="p "> .</ span > < span class ="n "> roundHalfDown</ span > < span class ="p "> ()</ span >
1282
- < span class ="p "> .</ span > < span class ="n "> roundHalfToZero</ span > < span class ="p "> ()</ span >
1283
- < span class ="p "> .</ span > < span class ="n "> roundHalfToInf</ span > < span class ="p "> ()</ span >
1284
- < span class ="p "> .</ span > < span class ="n "> roundHalfToEven</ span > < span class ="p "> ()</ span >
1285
- < span class ="p "> .</ span > < span class ="n "> roundHalfToOdd</ span > < span class ="p "> ()</ span >
1280
+ < span class ="p "> .</ span > < span class ="n "> roundHalfUp</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1281
+ < span class ="p "> .</ span > < span class ="n "> roundHalfDown</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1282
+ < span class ="p "> .</ span > < span class ="n "> roundHalfToZero</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1283
+ < span class ="p "> .</ span > < span class ="n "> roundHalfToInf</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1284
+ < span class ="p "> .</ span > < span class ="n "> roundHalfToEven</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1285
+ < span class ="p "> .</ span > < span class ="n "> roundHalfToOdd</ span > < span class ="p "> ()</ span > < span class =" w " > </ span >
1286
1286
</ pre > </ div >
1287
1287
</ div >
1288
1288
< p > An mathematical example of these rounding modes is better explained here: < a class ="reference external " href ="https://en.wikipedia.org/wiki/Rounding "> Rounding - Wikipedia</ a > </ p >
@@ -1294,24 +1294,24 @@ <h2>Assignment<a class="headerlink" href="#assignment" title="Permalink to this
1294
1294
< p > < code class ="docutils literal notranslate "> < span class ="pre "> AFix</ span > </ code > will automatically check and expand range and precision during assignment. By default, it is an error to assign
1295
1295
an < code class ="docutils literal notranslate "> < span class ="pre "> AFix</ span > </ code > value to another < code class ="docutils literal notranslate "> < span class ="pre "> AFix</ span > </ code > value with smaller range or precision.</ p >
1296
1296
< p > The < code class ="docutils literal notranslate "> < span class ="pre "> .truncated</ span > </ code > function is used to control how assignments to smaller types.</ p >
1297
- < div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> truncated</ span > < span class ="p "> (</ span > < span class ="n "> saturation</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> Boolean</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="kc "> false</ span > < span class ="p "> ,</ span >
1298
- < span class ="w "> </ span > < span class ="n "> overflow</ span > < span class ="w "> </ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> Boolean</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="kc "> true</ span > < span class ="p "> ,</ span >
1299
- < span class ="w "> </ span > < span class ="n "> rounding</ span > < span class ="w "> </ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> RoundType</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> FLOOR</ span > < span class ="p "> )</ span >
1297
+ < div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> truncated</ span > < span class ="p "> (</ span > < span class ="n "> saturation</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> Boolean</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="kc "> false</ span > < span class ="p "> ,</ span > < span class =" w " > </ span >
1298
+ < span class ="w "> </ span > < span class ="n "> overflow</ span > < span class ="w "> </ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> Boolean</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="kc "> true</ span > < span class ="p "> ,</ span > < span class =" w " > </ span >
1299
+ < span class ="w "> </ span > < span class ="n "> rounding</ span > < span class ="w "> </ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="nc "> RoundType</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> FLOOR</ span > < span class ="p "> )</ span > < span class =" w " > </ span >
1300
1300
1301
- < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> saturated</ span > < span class ="p "> ():</ span > < span class ="w "> </ span > < span class ="nc "> AFix</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="bp "> this</ span > < span class ="p "> .</ span > < span class ="n "> truncated</ span > < span class ="p "> (</ span > < span class ="n "> saturation</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="kc "> true</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> overflow</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="kc "> false</ span > < span class ="p "> )</ span >
1301
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> saturated</ span > < span class ="p "> ():</ span > < span class ="w "> </ span > < span class ="nc "> AFix</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="bp "> this</ span > < span class ="p "> .</ span > < span class ="n "> truncated</ span > < span class ="p "> (</ span > < span class ="n "> saturation</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="kc "> true</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> overflow</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="kc "> false</ span > < span class ="p "> )</ span > < span class =" w " > </ span >
1302
1302
</ pre > </ div >
1303
1303
</ div >
1304
1304
< p > < code class ="docutils literal notranslate "> < span class ="pre "> RoundType</ span > </ code > :</ p >
1305
- < div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> FLOOR</ span >
1306
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> CEIL</ span >
1307
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> FLOORTOZERO</ span >
1308
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> CEILTOINF</ span >
1309
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDUP</ span >
1310
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDDOWN</ span >
1311
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDTOZERO</ span >
1312
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDTOINF</ span >
1313
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDTOEVEN</ span >
1314
- < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDTOODD</ span >
1305
+ < div class ="highlight-scala notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> FLOOR</ span > < span class =" w " > </ span >
1306
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> CEIL</ span > < span class =" w " > </ span >
1307
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> FLOORTOZERO</ span > < span class =" w " > </ span >
1308
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> CEILTOINF</ span > < span class =" w " > </ span >
1309
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDUP</ span > < span class =" w " > </ span >
1310
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDDOWN</ span > < span class =" w " > </ span >
1311
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDTOZERO</ span > < span class =" w " > </ span >
1312
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDTOINF</ span > < span class =" w " > </ span >
1313
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDTOEVEN</ span > < span class =" w " > </ span >
1314
+ < span class ="nc "> RoundType</ span > < span class ="p "> .</ span > < span class ="nc "> ROUNDTOODD</ span > < span class =" w " > </ span >
1315
1315
</ pre > </ div >
1316
1316
</ div >
1317
1317
< p > The < code class ="docutils literal notranslate "> < span class ="pre "> saturation</ span > </ code > flag will add logic to saturate to the assigned datatype range.</ p >
0 commit comments