Build Logs

rchillyard/number • 3.8.1-RC1:2026-01-13

Errors

9

Warnings

40

Total Lines

4049

1##################################
2Clonning https://github.com/rchillyard/number.git into /build/repo using revision
3##################################
4----
5Preparing build for 3.8.1-RC1
6Scala binary version found: 3.8
7Implicitly using source version 3.8
8Scala binary version found: 3.8
9Implicitly using source version 3.8
10Would try to apply common scalacOption (best-effort, sbt/mill only):
11Append: ,REQUIRE:-source:3.8
12Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
13----
14Starting build for 3.8.1-RC1
15Execute tests: true
16sbt project found:
17No prepare script found for project rchillyard/number
18##################################
19Scala version: 3.8.1-RC1
20Targets: com.phasmidsoftware%number com.phasmidsoftware%number-algebra com.phasmidsoftware%number-core com.phasmidsoftware%number-expression com.phasmidsoftware%number-parse com.phasmidsoftware%number-top
21Project projectConfig: {"tests":null}
22##################################
23Using extra scalacOptions: ,REQUIRE:-source:3.8
24Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
25[sbt_options] declare -a sbt_options=()
26[process_args] java_version = '17'
27[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
28# Executing command line:
29java
30-Dfile.encoding=UTF-8
31-Dcommunitybuild.scala=3.8.1-RC1
32-Dcommunitybuild.project.dependencies.add=
33-Xmx7G
34-Xms4G
35-Xss8M
36-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
37-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
38-jar
39/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
40"setCrossScalaVersions 3.8.1-RC1"
41"++3.8.1-RC1 -v"
42"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
43"set every credentials := Nil"
44"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
45"removeScalacOptionsStartingWith -P:wartremover"
46
47moduleMappings
48"runBuild 3.8.1-RC1 """{"tests":null}""" com.phasmidsoftware%number com.phasmidsoftware%number-algebra com.phasmidsoftware%number-core com.phasmidsoftware%number-expression com.phasmidsoftware%number-parse com.phasmidsoftware%number-top"
49
50[info] [launcher] getting org.scala-sbt sbt 1.11.7 (this may take some time)...
51[info] welcome to sbt 1.11.7 (Eclipse Adoptium Java 17.0.8)
52[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
53[info] loading project definition from /build/repo/project
54[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
55[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
56[info] Compilation completed in 8.827s.
57[info] done compiling
58[info] loading settings for project root from build.sbt, publish.sbt...
59[info] loading settings for project core from build.sbt...
60[info] loading settings for project algebra from build.sbt...
61[info] loading settings for project expression from build.sbt...
62[info] loading settings for project parse from build.sbt...
63[info] loading settings for project top from build.sbt...
64[info] set current project to number (in build file:/build/repo/)
65[warn] there are 2 keys that are not used by any other settings/tasks:
66[warn]
67[warn] * ThisBuild / pomIncludeRepository
68[warn] +- /build/repo/publish.sbt:46
69[warn] * ThisBuild / publishMavenStyle
70[warn] +- /build/repo/publish.sbt:13
71[warn]
72[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
73[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
74Execute setCrossScalaVersions: 3.8.1-RC1
75OpenCB::Changing crossVersion 3.7.3 -> 3.8.1-RC1 in algebra/crossScalaVersions
76OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in algebra/crossScalaVersions
77OpenCB::Changing crossVersion 3.7.3 -> 3.8.1-RC1 in expression/crossScalaVersions
78OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in expression/crossScalaVersions
79OpenCB::Changing crossVersion 3.7.3 -> 3.8.1-RC1 in root/crossScalaVersions
80OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in root/crossScalaVersions
81OpenCB::Changing crossVersion 3.7.3 -> 3.8.1-RC1 in top/crossScalaVersions
82OpenCB::Changing crossVersion 3.7.3 -> 3.8.1-RC1 in parse/crossScalaVersions
83OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in parse/crossScalaVersions
84OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in top/crossScalaVersions
85OpenCB::Changing crossVersion 3.7.3 -> 3.8.1-RC1 in core/crossScalaVersions
86OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in core/crossScalaVersions
87[info] set current project to number (in build file:/build/repo/)
88[info] Setting Scala version to 3.8.1-RC1 on 6 projects.
89[info] Switching Scala version on:
90[info] * root (3.8.1-RC1)
91[info] expression (3.8.1-RC1)
92[info] parse (3.8.1-RC1)
93[info] algebra (3.8.1-RC1)
94[info] core (3.8.1-RC1)
95[info] top (3.8.1-RC1)
96[info] Excluding projects:
97[info] Reapplying settings...
98[info] set current project to number (in build file:/build/repo/)
99Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
100[info] Reapplying settings...
101[info] set current project to number (in build file:/build/repo/)
102[info] Defining Global / credentials, ThisBuild / credentials and 5 others.
103[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 30 others.
104[info] Run `last` for details.
105[info] Reapplying settings...
106[info] set current project to number (in build file:/build/repo/)
107Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
108[info] Reapplying settings...
109OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
110
111 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
112 Did you mean allExcludeDependencies ?
113 , retry without global scopes
114[info] Reapplying settings...
115[info] set current project to number (in build file:/build/repo/)
116Execute removeScalacOptionsStartingWith: -P:wartremover
117[info] Reapplying settings...
118[info] set current project to number (in build file:/build/repo/)
119[success] Total time: 0 s, completed Jan 13, 2026, 8:43:55 PM
120Build config: {"tests":null}
121Parsed config: Failure(sjsonnew.DeserializationException: Expected String as JString, but got JNull)
122Starting build...
123Projects: Set(root, expression, parse, algebra, core, top)
124Starting build for ProjectRef(file:/build/repo/,expression) (number-expression)... [0/6]
125OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
126OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
127OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
128Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wvalue-discard, -Wnonunit-statement, -explain, -Wunused:imports, -Wunused:privates, -Wunused:locals, -Wconf:msg=Couldn't resolve a member:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
129[info] compiling 84 Scala sources and 1 Java source to /build/repo/core/target/scala-3.8.1-RC1/classes ...
130[warn] -- [E030] Match case Unreachable Warning: /build/repo/core/src/main/scala/com/phasmidsoftware/number/core/numerical/GeneralNumber.scala:812:17
131[warn] 812 | case (NthRoot(_), NthRoot(_)) =>
132[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^
133[warn] | Unreachable case
134[warn] there were 7 deprecation warnings; re-run with -deprecation for details
135[warn] two warnings found
136[info] done compiling
137[info] compiling 34 Scala sources to /build/repo/algebra/target/scala-3.8.1-RC1/classes ...
138[info] done compiling
139[info] compiling 25 Scala sources to /build/repo/expression/target/scala-3.8.1-RC1/classes ...
140[info] done compiling
141[info] compiling 23 Scala sources to /build/repo/expression/target/scala-3.8.1-RC1/test-classes ...
142[warn] -- [E198] Unused Symbol Warning: /build/repo/expression/src/test/scala/com/phasmidsoftware/number/expression/expr/ExpressionMatchersSpec.scala:1566:8
143[warn] 1566 | val e = result.get
144[warn] | ^
145[warn] | unused local definition
146[warn] there were 3 feature warnings; re-run with -feature for details
147[warn] two warnings found
148[info] done compiling
14920:44:53,505 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.23
15020:44:53,507 |-INFO in ch.qos.logback.classic.util.ContextInitializer@77dfa - No custom configurators were discovered as a service.
15120:44:53,507 |-INFO in ch.qos.logback.classic.util.ContextInitializer@77dfa - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
15220:44:53,507 |-INFO in ch.qos.logback.classic.util.ContextInitializer@77dfa - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
15320:44:53,508 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
15420:44:53,508 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/build/repo/expression/target/scala-3.8.1-RC1/classes/logback.xml]
15520:44:53,508 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@433fddaa - Resource [logback.xml] occurs multiple times on the classpath.
15620:44:53,509 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@433fddaa - Resource [logback.xml] occurs at [file:/build/repo/core/target/scala-3.8.1-RC1/classes/logback.xml]
15720:44:53,509 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@433fddaa - Resource [logback.xml] occurs at [jar:file:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/com/phasmidsoftware/flog_3/1.0.11/flog_3-1.0.11.jar!/logback.xml]
15820:44:53,509 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@433fddaa - Resource [logback.xml] occurs at [file:/build/repo/expression/target/scala-3.8.1-RC1/classes/logback.xml]
15920:44:53,509 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@433fddaa - Resource [logback.xml] occurs at [file:/build/repo/algebra/target/scala-3.8.1-RC1/classes/logback.xml]
16020:44:53,648 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - Main configuration file URL: file:/build/repo/expression/target/scala-3.8.1-RC1/classes/logback.xml
16120:44:53,649 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - FileWatchList= {/build/repo/expression/target/scala-3.8.1-RC1/classes/logback.xml}
16220:44:53,649 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - URLWatchList= {}
16320:44:53,655 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@18c0fed5 - value "logs/Number.log" substituted for "${HOME_LOG}"
16420:44:53,659 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
16520:44:53,659 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
16620:44:53,677 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16720:44:53,746 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - NOTE: Writing to the console can be slow. Try to avoid logging to the
16820:44:53,746 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - console in production environments, especially in high volume systems.
16920:44:53,746 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also https://logback.qos.ch/codes.html#slowConsole
17020:44:53,747 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [FILE-ROLLING]
17120:44:53,747 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
17220:44:53,753 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@18c0fed5 - value "logs/Number.log" substituted for "${HOME_LOG}"
17320:44:53,765 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1766284408 - setting totalSizeCap to 20 GB
17420:44:53,770 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1766284408 - Archive files will be limited to [10 MB] each.
17520:44:53,770 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1766284408 - Will use gz compression
17620:44:53,776 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1766284408 - Will use the pattern logs/archived/app.%d{yyyy-MM-dd}.%i.log for the active file
17720:44:53,790 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@52940407 - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/archived/app.%d{yyyy-MM-dd}.%i.log.gz'.
17820:44:53,790 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@52940407 - Roll-over at midnight.
17920:44:53,790 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@52940407 - Setting initial period to 2026-01-13T19:44:53.790Z
18020:44:53,792 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
18120:44:53,794 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Active log file name: logs/Number.log
18220:44:53,794 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - File property is set to [logs/Number.log]
18320:44:53,796 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [ASYNC] not referenced. Skipping further processing.
18420:44:53,796 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to WARN
18520:44:53,796 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
18620:44:53,797 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to WARN
18720:44:53,797 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [FILE-ROLLING] to Logger[ROOT]
18820:44:53,797 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@6f7b4172 - End of configuration.
18920:44:53,798 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@70523c1e - Registering current configuration as safe fallback point
19020:44:53,800 |-INFO in ch.qos.logback.classic.util.ContextInitializer@77dfa - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 291 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
191
192result = 5.000(82)
193Warning: Polar r is zero: ComplexPolar(0,𝛑,1)
194Warning: Polar r is zero: ComplexPolar(0,𝛑,1)
195Warning: Polar r is zero: ComplexPolar(0,-𝛑,1)
196[info] NumberParserSpec:
197[info] numberWithFuzziness
198[info] - should parse 1.0*
199[info] - should reject 1.0 *
200[info] - should parse 1.*
201[info] - should reject 1.*
202[info] - should parse 3.1415927*
203[info] - should parse 3.1415927...
204[info] - should parse 3.1415927*E1
205[info] - should reject 3.1415927* E1
206[info] - should parse 1.00(5)
207[info] - should reject 1.00 (5)
208[info] generalNumber
209[info] - should parse 1.0
210[info] - should parse 1.*
211[info] - should work for 3.14
212[info] - should work for 3.1415927
213[info] - should parse 3.1415927*
214[info] - should parse 2.9979245800E8
215[info] - should parse 3.1415927*E1
216[info] - should parse 1/2
217[info] - should work for 1.00(5)
218[info] fuzz
219[info] - should parse (17)
220[info] - should parse *
221[info] number
222[info] - should parse 1.*
223[info] - should work for 3.14
224[info] - should work for 3.1415927
225[info] - should parse 3.1415927*
226[info] - should parse 3.1415927*E1
227[info] - should parse 3.141592653589793*
228[info] - should parse 𝛑
229[info] - should parse 1𝛑
230[info] - should reject 1 𝛑
231[info] realNumber
232[info] - should parse 2.9979245800E8
233[info] QuadraticRootSpec:
234[info] QuadraticRoot
235[info] - should create quadratic root
236[info] normalize - simple integer roots
237[info] - should normalize x² - 3x + 2 (roots: 1, 2) - positive branch
238[info] - should normalize x² - 3x + 2 - negative branch
239[info] - should normalize x² - 4 (roots: -2, 2) - positive branch
240[info] - should normalize x² - 4 - negative branch
241[info] normalize - golden ratio
242[info] - should normalize x² - x - 1 to golden ratio (positive branch)
243[info] - should normalize x² - x - 1 (negative branch)
244[info] normalize - irrational roots
245[info] - should normalize x² - 2 (roots: ±√2)
246[info] - should normalize x² + x - 1 (irrational roots)
247[info] normalize - rational roots
248[info] - should normalize 2x² - 5x + 2 converted to monic form
249[info] normalize - double root
250[info] - should normalize x² - 4x + 4 (double root: 2)
251[info] render
252[info] - should render quadratic root correctly
253[info] materialize
254[info] - should materialize to QuadraticSolution
255[info] - should have correct isAtomic
256[info] EagerOpsSpec:
257[info] EagerOps addition (+)
258[info] - should add two WholeNumbers and normalize
259[info] - should add two RationalNumbers and normalize to WholeNumber
260[info] - should add two RationalNumbers and keep as RationalNumber
261[info] - should add WholeNumber and RationalNumber
262[info] - should add fuzzy Reals and return Structure
263[info] - should add exact Real and WholeNumber
264[info] - should handle addition with zero
265[info] - should handle negative numbers
266[info] EagerOps multiplication (*)
267[info] - should multiply two WholeNumbers and normalize
268[info] - should multiply two RationalNumbers and normalize to WholeNumber
269[info] - should multiply WholeNumber and RationalNumber
270[info] - should multiply RationalNumbers keeping as RationalNumber
271[info] - should multiply fuzzy Reals and return Expression
272[info] - should handle multiplication by zero
273[info] - should handle multiplication by one
274[info] - should handle negative multiplication
275[info] EagerOps subtraction (-)
276[info] - should subtract two WholeNumbers
277[info] - should subtract resulting in negative
278[info] - should subtract RationalNumbers normalizing to WholeNumber
279[info] EagerOps division (/)
280[info] - should divide two WholeNumbers with exact result
281[info] - should divide two WholeNumbers creating RationalNumber
282[info] - should divide RationalNumbers normalizing to WholeNumber
283[info] - should handle division by one
284[info] EagerOps power (∧)
285[info] - should raise WholeNumber to power
286[info] - should handle power of zero
287[info] - should handle power of one
288[info] EagerOps mixed operations
289[info] - should structure operations on WholeNumber correctly
290[info] - should structure operations on RationalNumber correctly
291[info] - should normalize intermediate results
292[info] EagerOps with special types
293[info] - should work with InversePower
294[info] - should work with NatLog
295[info] - should work with Angle
296[info] - should work with Angle flipped
297[info] - should work with Angle mixed
298[info] EagerOps associativity and commutativity
299[info] - should be commutative for addition
300[info] - should be commutative for multiplication
301[info] - should be associative for addition
302[info] - should be associative for multiplication
303[info] EagerOps edge cases
304[info] - should handle large WholeNumbers
305[info] - should handle very small rationals
306[info] EagerOps type discovery after operations
307[info] - should have correct typeName after operation
308[info] - should have correct category after operation
309[info] - should have correct describe after operation
310[info] - should show Expression category for fuzzy operations
311[info] EmptySpec:
312[info] ∅
313[info] - should yield 42a
314[info] - should yield 42b
315[info] - should yield 42c
316[info] - should yield 4a
317[info] - should yield 4b
318[info] - should yield 4c
319[info] - should yield 5a
320[info] - should NOT yield 10
321[info] - should use implicit materialization
322[info] CompositeExpressionSpec:
323[info] CompositeExpression
324[info] - should terms
325[info] - should simplifyExact 1
326[info] - should simplifyExact 2
327[info] - should simplifyExact 3
328[info] - should simplifyComponents
329[info] - should render
330[info] - should maybeDouble
331[info] - should simplifyTrivial
332[info] - should simplifyComposite
333[info] - should simplifyConstant
334[info] - should isAtomic
335[info] - should apply
336[info] - should create
337[info] ComplexParserSpec:
338[info] ComplexParser
339[info] - should doParse
340[info] EagerOpsIntegrationSpec:
341[info] EagerOps full pipeline
342[info] - should create Expression -> simplify -> materialize -> normalize
343[info] - should handle complex expression that normalizes through multiple steps
344[info] - should preserve Expression for fuzzy operations
345[info] - should work with all normalize tests passing
346[info] TranscendentalSpec:
347[info] Transcendental constants
348[info] - should normalize Pi to Angle
349[info] - should normalize E to Real
350[info] - should normalize L2 to Real
351[info] - should normalize lgE to Real
352[info] - should normalize EulerMascheroni to itself
353[info] - should render Pi correctly
354[info] - should render E correctly
355[info] - should materialize Pi to Angle
356[info] - should materialize E to Real
357[info] - should materialize 𝛾 to Real
358[info] - should have correct isAtomic
359[info] FuzzyParserSpec:
360[info] integer
361[info] - should parse 1
362[info] - should parse 6
363[info] fuzz
364[info] - should parse (42)
365[info] - should not parse 42
366[info] fraction
367[info] - should parse .42
368[info] exponent
369[info] - should parse E-11
370[info] - should parse E11
371[info] - should parse e2
372[info] nominal
373[info] - should parse 1
374[info] - should parse 6.67408
375[info] - should parse 6.67408E-11
376[info] fuzzyRep
377[info] - should parse 1
378[info] partial parsing
379[info] - should parse 6.67408(31)E−11
380[info] fuzzyRep
381[info] - should parse 6.67408(31)E−11
382[info] fuzzy
383[info] - should be Exact(1)
384[info] - should parse 6.67408(31)E−11
385[info] - should parse 3.1415927(01)
386[info] - should parse 3.1415927
387[info] - should parse 16.5[2]
388[info] RationalParserSpec:
389[info] simpleNumber
390[info] - should parse 1
391[info] - should reject 1
392[info] rational
393[info] - should parse 1/2
394[info] realNumber
395[info] - should parse 3.1415927
396[info] - should parse 3.1415927E1
397[info] number
398[info] - should parse 1/2
399[info] - should parse 1
400[info] - should parse 3.1415927
401[info] QuadraticEquationSpec:
402[info] QuadraticEquation
403[info] - should create a quadratic equation with given p and q coefficients
404[info] - should always have 2 branches
405[info] - should format toString correctly for positive coefficients
406[info] - should format toString correctly for negative coefficients
407[info] - should compute discriminant correctly for positive case
408[info] - should compute discriminant correctly for zero case (repeated roots)
409[info] - should compute discriminant correctly for negative case (complex roots)
410[info] - should solve equation with two distinct real roots
411[info] - should solve equation with repeated root
412[info] - should solve simple square root equation x² - 4 = 0
413[info] - should solve equation with complex roots
414[info] - should solve equation x² + 1 = 0 (pure imaginary roots)
415[info] - should throw exception for invalid branch index -1
416[info] - should throw exception for invalid branch index 2
417[info] - should return Expression for valid branch 0
418[info] - should return Expression for valid branch 1
419[info] - should compute conjugate sum correctly
420[info] - should compute conjugate sum for negative p
421[info] - should compute conjugate product correctly
422[info] - should compute conjugate product for negative q
423[info] - should shift origin by c = 1
424[info] - should shift origin by c = -1
425[info] - should shift origin by c = 0 (identity)
426[info] - should invert equation correctly
427[info] - should handle invert with negative coefficients
428[info] - should apply arbitrary transformation
429[info] - should transform with identity functions
430[info] - should scale equation by positive factor
431[info] - should scale equation by negative factor
432[info] - should scale equation by fractional factor
433[info] - should support canEqual for QuadraticEquation instances
434[info] - should reject canEqual for non-QuadraticEquation instances
435[info] - should be equal to itself
436[info] - should be equal to another equation with same coefficients
437[info] - should not be equal to equation with different coefficients
438[info] QuadraticEquation companion object
439[info] - should create square root equation
440[info] - should provide golden ratio equation
441[info] - should provide root two equation
442[info] - should solve golden ratio equation correctly
443[info] - should solve root two equation correctly
444[info] - should handle equation with zero p coefficient
445[info] - should handle equation with zero q coefficient
446[info] - should handle equation with both coefficients negative
447[info] - should handle very small coefficients
448[info] - should handle very large coefficients
449[info] ExpressionSpec:
450[info] Expression
451[info] - should parseToMillExpression
452[info] ShuntingYardParser
453[info] - should parseInfix 1
454[info] - should parseInfix 1 + 2
455[info] - should parseInfix ( 1 + 2 ) * 3
456[info] - should parseInfix ( ( ( 4 + 5 ) * ( 2 + 3 ) + 6 ) / ( 8 + 7 ) ) ∧ 9
457[info] - should parseInfix ( ( ( ( 4 + ( 4 × ( 2 / ( 1 − 5 ) ) ) ) ∧ 2 ) ∧ 3 )
458[info] - should parseInfix 3 + 4 × 2 / ( 1 − 5 ) ∧ 2 ∧ 3
459[info] - should parseInfix ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )
460[info] - should parse Infix and evaluate: 9
461[info] - should parse Infix and evaluate: 0.5
462[info] - should parse Infix and evaluate: sqrt(3)
463[info] - should shuntingYard
464[info] - should shuntingYard w/o spaces
465[info] - should operator
466[info] RootSpec:
467[info] Root factory method
468[info] - should create QuadraticRoot for quadratic equation
469[info] - should create LinearRoot for linear equation
470[info] - should ignore branch parameter for linear equations
471[info] QuadraticRoot construction
472[info] - should create root from equation and branch
473[info] - should create root for branch 1
474[info] - should create root from QuadraticSolution
475[info] QuadraticRoot predefined constants
476[info] - should define phi (golden ratio)
477[info] - should define psi (conjugate of golden ratio)
478[info] - should define rootTwo (√2)
479[info] - should define negRootTwo (-√2)
480[info] - should define one
481[info] - should define zero
482[info] QuadraticRoot.solution
483[info] - should compute solution lazily for phi
484[info] - should compute correct solution for x² - 4 = 0, branch 0
485[info] - should compute correct solution for x² - 4 = 0, branch 1
486[info] - should compute solution for complex roots
487[info] QuadraticRoot.branches and branched
488[info] - should return 2 branches for quadratic equations
489[info] - should get specific branch using branched(index)
490[info] QuadraticRoot.isExact
491[info] - should always be exact
492[info] QuadraticRoot.render
493[info] - should render phi with special character
494[info] - should render psi with special character
495[info] - should render generic quadratic root
496[info] QuadraticRoot.toString
497[info] - should use special symbol for phi
498[info] - should use special symbol for psi
499[info] - should use descriptive string for generic roots
500[info] QuadraticRoot.power
501[info] - should return One for power of 0
502[info] - should return self for power of 1
503[info] - should compute square (power of 2)
504[info] - should compute higher powers
505[info] - should handle negative powers using reciprocal
506[info] - should compute square root (power of 1/2)
507[info] QuadraticRoot.reciprocal
508[info] - should compute reciprocal for quadratic roots
509[info] - should compute reciprocal for phi
510[info] QuadraticRoot.negate
511[info] - should negate a root
512[info] - should negate phi
513[info] QuadraticRoot.squareRoot
514[info] - should compute positive square root
515[info] - should compute negative square root
516[info] QuadraticRoot.add
517[info] - should add two quadratic roots with compatible solutions (pending)
518[info] - should return None for incompatible root addition
519[info] QuadraticRoot.pure
520[info] - should create new root with different equation
521[info] QuadraticRoot equality and hashCode
522[info] - should be equal to itself
523[info] - should be equal to another root with same equation and branch
524[info] - should not be equal if branches differ
525[info] - should not be equal if equations differ
526[info] - should have consistent hashCode
527[info] LinearRoot construction
528[info] - should create linear root from equation
529[info] - should define half constant
530[info] LinearRoot properties
531[info] - should always have branch 0
532[info] - should have 1 branch
533[info] - should branched returns itself
534[info] - should always be exact
535[info] LinearRoot.solution
536[info] - should compute solution for linear equation
537[info] - should compute solution for half
538[info] LinearRoot.pure
539[info] - should create new linear root with different equation
540[info] - should ignore branch parameter
541[info] Root.maybeFactor
542[info] - should determine factor for linear solutions
543[info] Root.approximation
544[info] - should provide approximation for phi
545[info] - should provide approximation for rootTwo
546[info] - should provide approximation for half
547[info] Root.maybeDouble
548[info] - should provide double value for exact solutions
549[info] Root edge cases
550[info] - should handle zero root
551[info] - should handle one root
552[info] - should handle equations with complex solutions
553[info] Root.evaluate and evaluateAsIs
554[info] - should evaluate root when solution is exact
555[info] - should evaluate phi
556[info] Root arithmetic combinations
557[info] - should compute phi squared
558[info] - should compute reciprocal of rootTwo
559[info] - should negate and square rootTwo
560[info] - should evaluate phi + psi
561simplifyAggregate 3: x=Aggregate{*,<1>,BiFunction{<3> ∧ <½>},rec(BiFunction{<3> ∧ <½>})}; simplified=<1>; result=Match: <1>
562simplifyAggregate 4: x=1; simplified=1; result=Match: <1>
563x1=Aggregate{*,BiFunction{<3> ∧ <½>},rec(BiFunction{<3> ∧ <½>}),<3>}
564x2=Aggregate{*,BiFunction{<3> ∧ <½>},rec(BiFunction{<3> ∧ <½>}),<3>}
565simplifyAggregate 5:
566 x1=3;
567 x1 simplified=3;
568 x2 simplified=3
569simplified = BiFunction{<𝛗> + <-1>}
570[info] MillSpec:
571[info] Mill
572[info] - should pop
573[info] - should push
574[info] - should iterate
575[info] - should empty
576[info] - should apply()
577[info] - should apply(1)
578[info] - should process empty list of Items
579[info] - should create a Mill from list of Items: 42, 37, +
580[info] - should accept list of Items: 42, 37, +
581[info] - should process list of Items: 42, 37, +
582[info] - should process list of Items: 42, 37, -
583[info] - should process list of Items with Swap: 42, 37, Swap, -
584[info] - should process list of Items with Noop: 42, 37, +, Noop
585[info] - should process list of Items with Clr: 42, 37, +, c
586[info] - should process Noop
587[info] - should process list of Items: 3, 2, ∧
588[info] - should process list of Items: 7, chs
589[info] - should process list of Items: 42, 37, +, 2, *
590[info] - should process list of Items: 2, inv
591[info] - should process a String: 42 37 + 2 *
592[info] parse and evaluate
593[info] - should parse and evaluate: 2 37 + 2 *
594[info] - should parse and evaluate: 2 3 ∧
595[info] - should parse and evaluate: 2 3 /
596[info] - should parse and evaluate: 2 √
597[info] - should parse and evaluate: 73 24 <> -
598[info] - should parse and evaluate: 𝛑 cos
599[info] - should parse and evaluate: 𝜀 ln
600[info] - should parse and evaluate: 2 exp
601[info] - should parse and evaluate: 12 34 + 56 + 78 - 90 + 12 -
602[info] - should parse and evaluate: 3696
603[info] - should parse and evaluate: 207
604[info] - should parse and evaluate: 207 with leading space
605[info] - should parse and evaluate: 207 with trailing space
606[info] - should parse and evaluate: 9
607[info] - should parse 3 5 + 7 2 – *
608[info] - should parse 3 4 2 × 1 5 − 2 3 ∧ ∧ ÷ +
609[info] - should parse and evaluate: 220xxxx with trailing space
610[info] - should parse infix
611[info] LiteralSpec:
612[info] Literal
613[info] - should create from WholeNumber
614[info] - should create from RationalNumber
615[info] - should normalize to its underlying number
616[info] - should render correctly
617[info] - should materialize to Some of its number
618[info] - should have correct isAtomic
619[info] ShuntingYardParserSpec:
620[info] ShuntingYardParser
621[info] - should parse the easy expressions
622[info] - should parse the tricky expressions (pending)
623[info] Mill
624[info] - should parseInfix 1
625[info] - should parseInfix 1 + 2
626[info] - should parseInfix ( 1 + 2 ) * 3
627[info] - should parseInfix ( ( ( 4 + 5 ) * ( 2 + 3 ) + 6 ) / ( 8 + 7 ) ) ∧ 9
628[info] - should parseInfix ( ( ( ( 4 + ( 4 × ( 2 / ( 1 − 5 ) ) ) ) ∧ 2 ) ∧ 3 )
629[info] - should parseInfix 3 + 4 × 2 / ( 1 − 5 ) ∧ 2 ∧ 3
630[info] - should parseInfix ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )
631[info] - should parse Infix and evaluate: 9
632[info] - should parse Infix and evaluate: 0.5
633[info] - should parse Infix and evaluate: sqrt(3)
634[info] - should parse Infix and evaluate: sin(𝛑)
635[info] - should parse Infix and evaluate: sin(𝛑/2)
636[info] - should parse Infix and evaluate: sin(𝛑) - 1
637[info] - should shuntingYard
638[info] - should shuntingYard w/o spaces
639[info] - should operator
640[info] - should essentially do nothing
641[info] ExpressionParserSpec:
642[info] ExpressionParser
643[info] - should apply number expressions
644[info] - should apply pi
645[info] - should apply e
646[info] SignificantSpaceParsersSpec:
647[info] SignificantSpaceParsers
648[info] - should stringParser
649[info] - should match for RegexOps
650[info] - should fail for RegexOps
651[info] - should ParserOps
652[info] - should ParserOptionOps 1
653[info] - should ParserOptionOps 2
654[info] - should trim
655[info] - should repSepSp
656[info] NamedConstantSpec:
657[info] NamedConstant
658[info] - should create pi
659[info] - should create e
660[info] - should normalize to Real
661[info] - should render with its name
662[info] - should materialize to Real
663[info] - should have correct isAtomic
664[info] - should scale correctly
665[info] MillParserSpec:
666[info] MillParser
667[info] - should parse monadicOperator
668[info] - should parse dyadicOperator
669[info] - should parse number
670[info] - should parse dyadicTerm
671[info] - should parse monadicTerm (1)
672[info] - should parse monadicTerm (2)
673[info] - should parse anadicTerm
674[info] - should parse term
675[info] - should parse mill
676[info] - should parseMill
677[info] - should parse: 73 24 <> -
678[info] ArithmeticParserSpec:
679[info] DoubleArithmeticParser$.factor
680[info] - should parse 3.1415927
681[info] DoubleArithmeticParser(1)
682[info] - should be 1.0
683[info] - should parse (1)
684[info] - should fail pi
685[info] DoubleArithmeticParser.term
686[info] - should parse 1*2
687[info] - should parse 1/2
688[info] - should parse 3.1415927
689[info] - should parse (1)
690[info] - should fail pi
691[info] - should fail 1+2
692[info] DoubleArithmeticParser.expr
693[info] - should parse 1 as 1.0
694[info] - should parse 1+1 as 2.0
695[info] - should parse 1*2+1 as 3.0
696[info] - should parse 1*2+1-1.5 as 1.5
697[info] - should parse 1/0 as infinite
698[info] - should parse 1*2+1-3/2 as 1.5
699[info] - should parse 10/3 as ...
700[info] - should succeed for DoubleArithmeticParser(2+1-3/2)
701[info] - should succeed DoubleArithmeticParser(5*(6+1-(3/2))/4)
702[info] - should succeed DoubleArithmeticParser(5*(6+1-3/2)/4) even without explicit parentheses
703[info] - should fail to parse 1*2+1-pi/2
704[info] - should fail to parse (1?2)
705[info] RationalArithmeticParser(1)
706[info] - should be 1
707[info] RationalArithmeticParser(1+1)
708[info] - should be 2/1
709[info] - should parse 1*2+1 as 3/1
710[info] - should parse 1*2+1-3/2 as 3/2
711[info] RationalArithmeticParser(1/0)
712[info] - should be infinite
713[info] (
714[info] - should fail
715[info] - should fail 1+2=2
716[info] IntArithmeticParser(3/2)
717[info] - should fail
718[info] ExpressionSpec:
719[info] evaluate
720[info] - should evaluate 1 + -1
721[info] - should evaluate 1 * -1
722[info] - should evaluate i * 2 (pending)
723[info] parse
724[info] - should parse and evaluate sqrt(3)
725[info] - should parse and evaluate half
726[info] ExpressionMonoFunction
727[info] - should work for Negate
728[info] - should work for Reciprocal
729[info] - should work for Exp
730[info] - should work for Ln
731[info] - should work for Sine
732[info] - should work for Cosine
733[info] evaluateAsIs for UniFunction
734[info] - should work for Exp(1)
735[info] - should work for Reciprocal
736[info] - should work for Ln(-1)
737[info] materialize UniFunction
738[info] - should work for Exp(1)
739[info] - should work for Reciprocal
740[info] - should work for Exp(Ln(2))
741[info] Expression
742[info] - should simplifyAndEvaluate
743[info] - should render
744[info] - should evaluate 3 5 + 7 2 – *
745[info] ExpressionOps
746[info] - should evaluate +
747[info] - should evaluate -
748[info] - should evaluate *
749[info] - should evaluate /
750[info] - should evaluate ∧ 2
751[info] - should evaluate sqrt 36 (pending)
752[info] - should evaluate sin pi/2
753[info] - should evaluate atan
754[info] - should evaluate log 2
755[info] - should evaluate log e
756[info] - should evaluate log 10
757[info] - should fail to evaluate log 1 x or log 0 x
758[info] - should evaluate ln E
759[info] - should evaluate ln 2E
760[info] - should evaluate xxx
761[info] - should evaluate xxx 2
762[info] toString
763[info] - should work for (sqrt 7)∧2
764[info] various operations
765[info] - should evaluate E * 2
766[info] isExact
767[info] - should be true for any constant Valuable
768[info] - should be true for any sum of exact Numbers of the same factor (not e)
769[info] - should be false for any product of exact Numbers and a NatLog factor (except for one)
770[info] - should be true for product of one exact Numbers and a NatLog factor
771[info] - should be true for product of zero exact Numbers and a NatLog factor
772[info] depth
773[info] - should be 1 for any atomic expression
774[info] - should be 2 for any UniFunction expression
775[info] - should be more than 1 for other expression
776[info] Euler
777[info] - should prove Euler's identity 1 (pending)
778[info] - should prove Euler's identity 2 (pending)
779[info] FieldExpression
780[info] - should Zero be equal to zero
781[info] - should One be equal to one
782[info] simplifyConstant
783[info] - should simplify biFunction expressions
784[info] simplifyExact
785[info] - should simplify biFunction expressions
786[info] simplify
787[info] - should simplify field expressions
788[info] - should simplify constant expressions
789[info] - should simplify unary expressions
790[info] - should simplify binary expressions
791[info] - should simplify function expressions
792[info] - should simplify biFunction expressions
793[info] - should simplify aggregate expressions
794[info] - should aggregate 2
795[info] - should evaluate e * e
796[info] - should evaluate phi * phi
797[info] - should evaluate 1 / phi
798[info] - should evaluate - phi
799[info] Sum
800[info] - should add pi to -pi
801[info] simplifyComposite
802[info] - should evaluate 1/2 * 2
803[info] - should evaluate e * e
804[info] - should evaluate phi * phi
805[info] Expression.apply(String)
806[info] - should
807[info] ExpressionMatchersSpec:
808[info] value
809[info] - should work with value on Literal
810[info] - should work with value on One
811[info] - should work with value on Number.one
812[info] - should work with value on Real
813[info] - should fail on non-value
814[info] matchValue
815[info] - should work with value 1
816[info] |
817[info] - should work with | 1 or 2
818[info] matchSimpler
819[info] - should matchSimpler 1
820[info] - should simplifyTrivial 1
821[info] - should handle Sum
822[info] - should handle Product
823[info] - should handle Power
824[info] - should cancel -1 and - 1
825[info] - should cancel multiplication and division
826[info] - should cancel multiplication and division with simplify
827[info] - should simplify sqrt(7)∧2
828[info] - should cancel 1 and - -1
829[info] - should cancel 1 and - -1 b
830[info] - should cancel 2 * 1/2 (a)
831[info] - should cancel 2 * 1/2 (b)
832[info] - should cancel ∧2 and sqrt for 7
833[info] - should show that lazy evaluation sometimes works even when you don't use it (a)
834[info] - should cancel multiplication and division 2
835[info] - should cancel multiplication and division backwards
836[info] - should cancel 1 and - -1 (a)
837[info] - should cancel 2 and * 1/2
838[info] - should cancel 2 * 1/2
839[info] - should cancel ∧2 and sqrt
840[info] - should cancel addition and subtraction of 3
841[info] - should cancel addition and subtraction of e
842[info] - should work for multi-levels 1
843[info] - should work for multi-levels 2
844[info] matchSimpler 2
845[info] - should simplify (1+2)*(2+1)
846[info] - should properly simplify 1 * (root3 / root3 * 3)
847[info] - should simplify e * 2 / 2
848[info] - should simplify root3 * 2 / 2
849[info] - should simplify root4 * 2 / 2 part 1
850[info] - should simplify root4 * 2 / 2 part 2
851[info] - should distribute
852[info] - should distributeProductSum a
853[info] - should distributeProductSum b
854[info] - should distributeProductPower on root(3) * root(3)
855[info] simplifyAggregate
856[info] - should asAggregate
857[info] - should simplifyAggregate 1
858[info] - should simplifyAggregate 2
859[info] - should simplifyAggregate 3
860[info] - should simplifyAggregate 4
861[info] - should simplifyAggregate 5
862[info] simplify
863[info] - should cancel addition and subtraction (a)
864[info] - should use multiply instead of addition
865[info] - should work for Negate
866[info] - should work for Negate Negate
867[info] - should work for Reciprocal
868[info] - should work for Reciprocal Reciprocal
869[info] - should work for Negate Zero
870[info] - should work for Negate MinusOne
871[info] - should work for Reciprocal Zero
872[info] - should work for Reciprocal One
873[info] - should work for Reciprocal Two
874[info] - should work for Exp Infinity
875[info] - should work for Exp neg Infinity
876[info] - should work for Exp Zero
877[info] - should work for Exp One
878[info] - should work for Ln Zero
879[info] - should work for Ln One
880[info] - should work for Ln e
881[info] - should work for Sine 0
882[info] - should work for Sine pi/2
883[info] - should work for Sine pi
884[info] - should work for Cosine 0
885[info] - should work for Cosine pi/2
886[info] - should work for Cosine pi
887[info] simplify rather than matchSimpler
888[info] - should matchSimpler 1
889[info] - should simplifyTrivial 1
890[info] - should handle Sum
891[info] - should handle Product
892[info] - should handle Power
893[info] - should cancel -1 and - 1
894[info] - should cancel multiplication and division
895[info] - should cancel multiplication and division with simplify
896[info] - should simplify sqrt(7)∧2
897[info] - should cancel 1 and - -1
898[info] - should cancel 1 and - -1 b
899[info] - should cancel 2 * 1/2 (a)
900[info] - should cancel 2 * 1/2 (b)
901[info] - should cancel ∧2 and sqrt for 7
902[info] - should show that lazy evaluation sometimes works even when you don't use it (a)
903[info] - should cancel multiplication and division 2
904[info] - should cancel multiplication and division backwards
905[info] - should cancel 1 and - -1 (a)
906[info] - should cancel 2 and * 1/2
907[info] - should cancel 2 * 1/2
908[info] - should cancel ∧2 and sqrt
909[info] - should cancel addition and subtraction of 3
910[info] - should cancel addition and subtraction of e
911[info] - should work for multi-levels 1
912[info] - should work for multi-levels 2
913[info] complementaryTermsEliminatorAggregate
914[info] - should eliminate * 2 / 2 in Aggregate
915[info] - should eliminate 2 :+ -2 in Aggregate
916[info] - should eliminate √3 and -√3 in Aggregate
917[info] - should eliminate square root ∧ 2 in Aggregate
918[info] simplifyAtomic
919[info] - should leave atomic expression as is
920[info] - should simplify literal expression one
921[info] - should simplify literal expression pi
922[info] factorsMatch
923[info] - should match expression Sum
924[info] - should match expression Product
925[info] - should match expression Power
926[info] simplify aggregate, etc.
927[info] - should aggregate 1
928[info] - should aggregate 2
929[info] - should simplify aggregate 1
930[info] - should simplify aggregate 1a
931[info] - should simplify aggregate 2a
932[info] - should simplify aggregate 2b
933[info] - should simplify binary expression 3
934[info] - should simplify aggregate 3a
935[info] - should simplify aggregate 4a
936[info] - should simplify aggregate 4b
937[info] simplifyAndEvaluate (a)
938[info] - should show ∧2 and sqrt for illustrative purposes (a)
939[info] - should evaluate E * 2
940[info] simplifyTerms
941[info] - should work for BiFunction 1
942[info] - should work for BiFunction 2
943[info] - should work for UniFunction
944[info] - should work for Aggregate total
945[info] - should work for Aggregate product 1
946[info] biFunctionAggregator
947[info] - should work for 7 :+ 2 - 3 a
948[info] - should work for 7 :+ 2 - 3 b
949[info] - should work for 7 * 2 * -3
950[info] biFunctionSimplifier
951[info] - should work for square of square root
952[info] - should work for products
953[info] - should work for sums
954[info] - should gather powers of 2 and * 1/2
955[info] matchComplementary
956[info] - should cancel plus and minus
957[info] matchDyadicTrivial
958[info] - should handle Sum
959[info] - should handle Product
960[info] - should handle Power 1
961[info] - should handle Power 2
962[info] - should cancel multiplication and division
963[info] - should cancel value and reciprocal 1
964[info] - should cancel value and reciprocal 2
965[info] matchComplementaryExpressions
966[info] - should work for plus and minus
967[info] - should work for reciprocals
968[info] matchSimplifyDyadicTermsTwoLevels
969[info] - should match 1
970[info] - should match 2
971[info] biFunctionSimplifier
972[info] - should simplify
973[info] - should simplify √3 * -1 as -√3
974[info] - should simplify √3 * 1 as √3
975[info] - should simplify (√3 :+ 1)(√3 - 1) as 2 exactly
976[info] - should evaluate (√3 :+ 1)(√3 :+ -1) as 2 exactly
977[info] - should biFunctionSimplifier on (1 :+ -3)
978[info] - should biFunctionSimplifier on (1 :+ √3)(1 - √3)
979[info] - should simplify 1 :+ 2 - 2
980[info] - should properly simplify 1 :+ 2 - 2 :+ 0
981[info] - should simplify expressions involving square root 3
982[info] various
983[info] - should distributeProductSum c
984[info] - should properly simplify 1 :+ root3 - root3 :+ 0
985[info] - should properly simplify (1 :+ root3) :+ (zero - root3)
986[info] - should properly simplify (1 * root3) * (3 / root3)
987[info] - should simplify 2 root(3) all squared
988[info] value with logging
989[info] - should work with value on Literal
990[info] - should work with value on One
991[info] - should work with value on Number.one
992[info] - should work with value on Real
993[info] - should fail on non-value
994[info] biFunctionTransformer (2)
995[info] - should simplify 1 :+ 1
996[info] - should simplify pi :+ pi
997[info] - should simplify 1 :+ 0
998[info] - should fail to simplify 1 :+ pi
999[info] - should simplify 1 :+ -1
1000[info] - should simplify 1 * 1
1001[info] - should simplify pi * pi
1002[info] - should simplify 1 * 0
1003[info] - should simplify 1 * -1
1004[info] - should evaluateAsIs 2 ∧ -1
1005[info] - should fail to simplify 2 ∧ 1/2
1006[info] evaluateMonadicDuple
1007[info] - should simplify E
1008[info] - should simplify ln(E)
1009[info] - should simplify ln(1)
1010[info] - should simplify ln(-1)
1011[info] matchSimplifyBiFunction
1012[info] - should simplify multiple similar ops
1013[info] two levels
1014[info] - should get 0 from -√3 :+ √3
1015[info] - should get 0 from √3 :+ -√3
1016[info] - should get 1 from 1/√3 * √3
1017[info] - should simplify -1 * √3 as negate(√3)
1018[info] - should simplify √3 * -1 as negate(√3)
1019[info] - should simplify various
1020[info] - should simplify root3 * 2 / 2
1021[info] matchAndCollectTwoDyadicLevels
1022[info] - should work for √3 * √3
1023[info] - should work for √3 :+ -√3
1024[info] - should work for (π :+ 1) * (π - 1) (pending)
1025[info] complementaryTermsEliminatorBiFunction
1026[info] - should match 1 and -1 in addition
1027[info] - should evaluate to Angle.zero
1028Starting build for ProjectRef(file:/build/repo/,algebra) (number-algebra)... [1/6]
1029Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wvalue-discard, -Wnonunit-statement, -explain, -Wunused:imports, -Wunused:privates, -Wunused:locals, -Wconf:msg=Couldn't resolve a member:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1030[info] compiling 17 Scala sources to /build/repo/algebra/target/scala-3.8.1-RC1/test-classes ...
1031[warn] -- [E198] Unused Symbol Warning: /build/repo/algebra/src/test/scala/com/phasmidsoftware/number/algebra/eager/EqualityComprehensiveSpec.scala:20:37
1032[warn] 20 | import cats.syntax.eq.catsSyntaxEq as _
1033[warn] | ^^^^^^^^^^^^^^^^^
1034[warn] | unused import
1035[warn] one warning found
1036[info] done compiling
103720:45:02,048 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.23
103820:45:02,049 |-INFO in ch.qos.logback.classic.util.ContextInitializer@1bc7b5b8 - No custom configurators were discovered as a service.
103920:45:02,049 |-INFO in ch.qos.logback.classic.util.ContextInitializer@1bc7b5b8 - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
104020:45:02,050 |-INFO in ch.qos.logback.classic.util.ContextInitializer@1bc7b5b8 - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
104120:45:02,050 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
104220:45:02,050 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/build/repo/algebra/target/scala-3.8.1-RC1/classes/logback.xml]
104320:45:02,051 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@267706a6 - Resource [logback.xml] occurs multiple times on the classpath.
104420:45:02,051 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@267706a6 - Resource [logback.xml] occurs at [file:/build/repo/core/target/scala-3.8.1-RC1/classes/logback.xml]
104520:45:02,051 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@267706a6 - Resource [logback.xml] occurs at [jar:file:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/com/phasmidsoftware/flog_3/1.0.11/flog_3-1.0.11.jar!/logback.xml]
104620:45:02,051 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@267706a6 - Resource [logback.xml] occurs at [file:/build/repo/algebra/target/scala-3.8.1-RC1/classes/logback.xml]
104720:45:02,150 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - Main configuration file URL: file:/build/repo/algebra/target/scala-3.8.1-RC1/classes/logback.xml
104820:45:02,150 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - FileWatchList= {/build/repo/algebra/target/scala-3.8.1-RC1/classes/logback.xml}
104920:45:02,150 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - URLWatchList= {}
105020:45:02,152 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@6aa56752 - value "logs/Number.log" substituted for "${HOME_LOG}"
105120:45:02,154 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
105220:45:02,154 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
105320:45:02,159 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
105420:45:02,194 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - NOTE: Writing to the console can be slow. Try to avoid logging to the
105520:45:02,194 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - console in production environments, especially in high volume systems.
105620:45:02,194 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also https://logback.qos.ch/codes.html#slowConsole
105720:45:02,195 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [FILE-ROLLING]
105820:45:02,195 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
105920:45:02,197 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@6aa56752 - value "logs/Number.log" substituted for "${HOME_LOG}"
106020:45:02,200 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1323173010 - setting totalSizeCap to 20 GB
106120:45:02,201 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1323173010 - Archive files will be limited to [10 MB] each.
106220:45:02,201 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1323173010 - Will use gz compression
106320:45:02,205 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1323173010 - Will use the pattern logs/archived/app.%d{yyyy-MM-dd}.%i.log for the active file
106420:45:02,206 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@68921284 - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/archived/app.%d{yyyy-MM-dd}.%i.log.gz'.
106520:45:02,206 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@68921284 - Roll-over at midnight.
106620:45:02,207 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@68921284 - Setting initial period to 2026-01-13T19:44:53.795Z
106720:45:02,208 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
106820:45:02,209 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Active log file name: logs/Number.log
106920:45:02,210 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Setting currentFileLength to 0 for logs/Number.log
107020:45:02,210 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - File property is set to [logs/Number.log]
107120:45:02,211 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [ASYNC] not referenced. Skipping further processing.
107220:45:02,211 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to WARN
107320:45:02,211 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
107420:45:02,211 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to WARN
107520:45:02,211 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [FILE-ROLLING] to Logger[ROOT]
107620:45:02,212 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@76ce6b06 - End of configuration.
107720:45:02,212 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@37100d7a - Registering current configuration as safe fallback point
107820:45:02,212 |-INFO in ch.qos.logback.classic.util.ContextInitializer@1bc7b5b8 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 162 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
1079
1080[info] NormalizeSpec:
1081[info] WholeNumber.normalize
1082[info] - should return itself (already in simplest form)
1083[info] - should work for zero
1084[info] - should work for negative numbers
1085[info] RationalNumber.normalize
1086[info] - should reduce to WholeNumber when denominator is 1
1087[info] - should reduce fraction and then to WholeNumber
1088[info] - should keep as RationalNumber when not reducible to whole
1089[info] - should return same instance if already normalized and not whole
1090[info] - should preserve asPercentage flag when not reducing to whole
1091[info] - should work with negative rationals
1092[info] - should work with zero
1093[info] Real.normalize
1094[info] - should return itself (fuzzy numbers don't reduce)
1095[info] - should keep exact Reals as Real
1096[info] InversePower.normalize
1097[info] - should reduce to base when n=1
1098[info] - should normalize the base number
1099[info] - should return same instance if base doesn't normalize
1100[info] - should handle nested normalization
1101[info] NatLog.normalize
1102[info] - should reduce NatLog(0) to WholeNumber(1)
1103[info] - should normalize the number parameter
1104[info] - should return same instance if number doesn't normalize
1105[info] Logarithm.normalize
1106[info] - should reduce Logarithm(base, 0) to WholeNumber(1)
1107[info] - should normalize the number parameter
1108[info] - should return same instance if number doesn't normalize
1109[info] Angle.normalize
1110[info] - should return itself (angles have semantic meaning)
1111[info] - should normalize the radians parameter
1112[info] Complex.normalize
1113[info] normalize integration tests
1114[info] - should handle chains of normalization
1115[info] - should not work in raw arithmetic operations
1116[info] type discovery methods
1117[info] - should return correct typeName
1118[info] - should return correct category
1119[info] - should return correct describe string
1120[info] LatexRendererInstancesSpec:
1121[info] Rational LatexRenderer
1122[info] - should render integers without denominator
1123[info] - should render proper fractions
1124[info] - should render negative fractions
1125[info] RationalNumber LatexRenderer
1126[info] - should delegate to Rational renderer
1127[info] - should render half correctly
1128[info] - should render zero correctly
1129[info] - should render one correctly
1130[info] Logarithm LatexRenderer
1131[info] - should render logarithmic numbers
1132[info] InversePower LatexRenderer
1133[info] - should render square roots
1134[info] - should render square roots of fractions
1135[info] - should render cube roots
1136[info] - should render fifth roots
1137[info] - should render nested roots properly
1138[info] QuadraticSolution LatexRenderer
1139[info] - should render phi constant with LaTeX symbol
1140[info] - should render psi constant with LaTeX symbol
1141[info] - should render solution with zero offset as just base
1142[info] - should render solution with zero base as just offset
1143[info] - should render solution with zero base and negative branch
1144[info] - should render real solution with positive branch (branch 0)
1145[info] - should render real solution with negative branch (branch 1)
1146[info] - should render complex solution with positive branch
1147[info] - should render complex solution with negative branch
1148[info] - should render solution with integer base and irrational offset
1149[info] - should render negative base correctly
1150[info] LinearSolution LatexRenderer
1151[info] - should render linear solution as its value
1152[info] - should render fractional linear solution
1153[info] - should render linear solution with irrational value
1154[info] Algebraic LatexRenderer (general)
1155[info] - should handle QuadraticSolution through Algebraic type
1156[info] - should handle LinearSolution through Algebraic type
1157[info] Edge cases and special values
1158[info] - should handle very large rationals
1159[info] - should handle negative zero-like cases
1160[info] - should render unity correctly in various forms
1161[info] Complex number representations
1162[info] - should handle the golden ratio phi correctly
1163[info] - should handle both roots of x² - x - 1 = 0
1164[info] Integration with existing render method
1165[info] - should provide LaTeX rendering separate from display rendering
1166[info] WholeNumberSpec:
1167[info] WholeNumber
1168[info] - should test creation
1169[info] - should test render
1170[info] - should test conversion to other Structures
1171[info] - should test comparison
1172[info] - should test compareExact
1173[info] - should test arithmetic operations
1174[info] WholeNumberSpec 2
1175[info] - should +
1176[info] - should *
1177[info] - should -
1178[info] - should apply
1179[info] - should approximation
1180[info] - should asJavaNumber
1181[info] - should asT
1182[info] - should compare
1183[info] - should compareExact
1184[info] - should compareTo
1185[info] - should convert
1186[info] - should plus
1187[info] - should scale
1188[info] - should doScale
1189[info] - should doScaleInt
1190[info] - should isExact
1191[info] - should isZero
1192[info] - should maybeDouble
1193[info] - should maybeFactor
1194[info] - should minusOne
1195[info] - should negate
1196[info] - should one
1197[info] - should render
1198[info] - should scaleFactor
1199[info] - should showWholeNumber
1200[info] - should signum
1201[info] - should maybeInt
1202[info] - should toString
1203[info] - should zero
1204[info] CommutativeGroup[WholeNumber]
1205[info] - should plus
1206[info] - should times
1207[info] - should negate
1208[info] AngleSpec:
1209[info] Angle
1210[info] - should test creation
1211[info] - should test render
1212[info] - should test conversion to other Structures
1213[info] - should isExact
1214[info] - should maybeDouble
1215[info] - should isZero
1216[info] - should test comparison
1217[info] - should test compareExact
1218[info] - should test arithmetic operations
1219[info] Angle (in degrees)
1220[info] - should test equivalence
1221[info] - should test creation
1222[info] - should test render
1223[info] - should maybeDouble
1224[info] - should isZero
1225[info] - should test compareExact
1226[info] - should test arithmetic operations
1227[info] AdditiveCommutativeGroup[Angle]
1228[info] - should combine
1229[info] - should inverse
1230[info] RationalNumberSpec:
1231[info] RationalNumber
1232[info] - should apply
1233[info] - should assertEq
1234[info] - should render
1235[info] - should toString
1236[info] - should parse
1237[info] - should percentage
1238[info] - should perform addition correctly
1239[info] - should perform subtraction correctly
1240[info] - should perform multiplication correctly
1241[info] - should perform division correctly
1242[info] - should perform reciprocal correctly
1243[info] - should compare numbers correctly
1244[info] - should convert to different number types
1245[info] - should handle zero correctly
1246[info] Field[RationalNumber]
1247[info] - should plus
1248[info] - should negate
1249[info] NumberSpec:
1250[info] Number
1251[info] - should perform addition correctly
1252[info] - should perform subtraction correctly
1253[info] - should perform multiplication correctly
1254[info] - should perform division correctly
1255[info] - should compare numbers correctly
1256[info] - should convert to different number types
1257[info] - should isExact
1258[info] - should handle zero correctly
1259[info] EagerSpec:
1260[info] Eager
1261[info] - should ~= Real/Real
1262[info] - should ~= Angle/Angle
1263[info] - should ~= WholeNumber/WholeNumber
1264[info] - should ~= RationalNumber/RationalNumber
1265[info] - should ~= RationalNumber/WholeNumber
1266[info] - should ~= Functional/Functional
1267[info] - should ~= Real/WholeNumber
1268[info] - should ~= Real/RationalNumber
1269[info] - should ~= RationalNumber/Real
1270[info] - should ~= Real/Functional (1)
1271[info] - should ~= Real/Functional (2)
1272[info] - should ~= Functional/Real
1273[info] - should ~= Functional/WholeNumber
1274[info] - should ~= WholeNumber/Functional
1275[info] NormalizeIntegrationSpec:
1276[info] normalize in addition operations
1277[info] - should normalize RationalNumber + RationalNumber to WholeNumber when appropriate
1278[info] - should keep as RationalNumber when sum is not whole
1279[info] - should normalize WholeNumber + RationalNumber correctly
1280[info] normalize in multiplication operations
1281[info] - should normalize RationalNumber * RationalNumber to WholeNumber
1282[info] - should normalize WholeNumber * RationalNumber to WholeNumber when appropriate
1283[info] normalize in division operations
1284[info] - should create and normalize rational from WholeNumber division
1285[info] - should keep as RationalNumber when division is not exact
1286[info] normalize with InversePower operations
1287[info] - should simplify square root of perfect square
1288[info] - should simplify cube root of perfect cube
1289[info] normalize with logarithm operations
1290[info] - should reduce NatLog(0) in expressions
1291[info] normalize in nested operations
1292[info] - should normalize through multiple levels
1293[info] - should normalize NatLog with normalized argument
1294[info] normalize preserves mathematical equality
1295[info] - should maintain fuzzy equality after normalization
1296[info] - should normalize both sides of comparison consistently
1297[info] normalize edge cases
1298[info] - should handle normalization of zero in various forms
1299[info] - should handle normalization of one in various forms
1300[info] - should handle negative numbers correctly
1301[info] normalize with percentage flag
1302[info] - should preserve percentage flag when RationalNumber doesn't reduce to whole
1303[info] - should not lose percentage flag when normalizing
1304[info] InversePowerSpec:
1305[info] InversePower
1306[info] - should convert
1307[info] - should toDouble
1308[info] - should signum
1309[info] - should approximation
1310[info] - should asJavaNumber
1311[info] - should maybeDouble
1312[info] - should scale
1313[info] - should isZero
1314[info] - should isExact
1315[info] - should maybeFactor
1316[info] - should toRational
1317[info] - should showInversePower
1318[info] - should render
1319[info] - should render implicitly
1320[info] normalize
1321[info] - should normalize
1322[info] RealSpec:
1323[info] Real
1324[info] - should apply(String)
1325[info] - should perform addition correctly
1326[info] - should perform subtraction correctly
1327[info] - should perform multiplication correctly
1328[info] - should perform division correctly
1329[info] - should compare numbers correctly A
1330[info] - should compare numbers correctly B
1331[info] - should convert to different number types
1332[info] - should handle zero correctly
1333[info] Ring[Real]
1334[info] - should plus
1335[info] - should negate
1336[info] ScalarSpec:
1337[info] Scalar
1338[info] - should parse string
1339[info] - should correctly determine if a value is exact
1340[info] - should convert to Real when possible
1341[info] - should render values correctly
1342[info] - should perform addition using doPlus
1343[info] - should compare for equality correctly
1344[info] NatSpec:
1345[info] Nat
1346[info] - should have correct constant elements
1347[info] - should inc
1348[info] - should render
1349[info] - should fail on negative numbers
1350[info] - should perform addition correctly
1351[info] - should perform multiplication correctly
1352[info] - should satisfy distributive property
1353[info] LatexRendererSpec:
1354[info] LatexRenderer typeclass
1355[info] - should provide summoner method
1356[info] - should provide instance constructor
1357[info] - should provide syntax extension
1358[info] LatexRenderer helper methods
1359[info] - should wrap content in inline math mode
1360[info] - should wrap content in display math mode
1361[info] - should create fractions
1362[info] - should create square roots
1363[info] - should create nth roots
1364[info] - should format signs correctly
1365[info] EqualityComprehensiveSpec:
1366[info] === (Exact Equality)
1367[info] - should compare WholeNumbers with ===
1368[info] - should compare RationalNumbers with ===
1369[info] - should compare WholeNumber with RationalNumber using ===
1370[info] - should compare exact Reals with ===
1371[info] - should compare WholeNumber with exact Real using ===
1372[info] - should compare RationalNumber with exact Real using ===
1373[info] - should compare Angles with === (ignoring degrees flag)
1374[info] - should compare Nats with ===
1375[info] - should compare LinearSolutions with ===
1376[info] - should compare QuadraticSolutions with ===
1377[info] - should compare NatLogs with ===
1378[info] - should compare InversePowers with ===
1379[info] ~== (Fuzzy Equality)
1380[info] - should compare fuzzy Reals with ~==
1381[info] - should compare exact Real with fuzzy Real using ~==
1382[info] - should compare Angles with ~==
1383[info] - should handle fuzzy equality for normalized Angles
1384[info] - should use exact equality for RationalNumber with ~==
1385[info] - should use exact equality for WholeNumber with ~==
1386[info] - should use exact equality for Nat with ~==
1387[info] - should compare WholeNumber with fuzzy Real using ~==
1388[info] - should compare RationalNumber with fuzzy Real using ~==
1389[info] - should compare WholeNumber with RationalNumber using ~==
1390[info] - should compare Angle with different representations using ~==
1391[info] - should compare QuadraticSolutions with ~==
1392[info] - should compare InversePowers with ~=
1393[info] === and ~== edge cases
1394[info] - should handle zero comparisons
1395[info] - should handle one/unity comparisons
1396[info] - should handle negative numbers
1397[info] - should not consider infinity equal to large numbers
1398[info] - should handle NaN appropriately
1399[info] symmetry of === and ~==
1400[info] - should be symmetric for ===
1401[info] - should be symmetric for ~==
1402[info] - should be symmetric for cross-type comparisons with ~==
1403[info] transitivity of === and ~==
1404[info] - should be transitive for ===
1405[info] - should demonstrate that ~== respects transitivity for exact types
1406[info] - should note that ~== may not be transitive for fuzzy values
1407[info] + Fuzzy equality is not necessarily transitive
1408[info] reflexivity of === and ~==
1409[info] - should be reflexive for ===
1410[info] - should be reflexive for ~==
1411[info] special mathematical values
1412[info] - should handle pi correctly
1413[info] - should handle e correctly
1414[info] - should handle golden ratio (phi) correctly
1415[info] - should handle square roots correctly
1416[info] practical usage patterns
1417[info] - should work with collections using ===
1418[info] - should work with Option using ===
1419[info] - should work in pattern matching contexts
1420[info] QuadraticSolutionSpec:
1421[info] QuadraticSolution construction
1422[info] - should create a quadratic solution with real roots (branch 0)
1423[info] - should create a quadratic solution with real roots (branch 1)
1424[info] - should create a quadratic solution with imaginary roots (branch 0)
1425[info] - should create a quadratic solution with imaginary roots (branch 1)
1426[info] - should create phi constant correctly
1427[info] - should create psi constant correctly
1428[info] QuadraticSolution.conjugate
1429[info] - should compute conjugate by inverting branch (0 -> 1)
1430[info] - should compute conjugate by inverting branch (1 -> 0)
1431[info] - should preserve imaginary flag in conjugate
1432[info] - should conjugate of conjugate returns original
1433[info] QuadraticSolution.negate
1434[info] - should negate base and flip branch
1435[info] - should negate and conjugate correctly for branch 1
1436[info] QuadraticSolution.normalize
1437[info] - should normalize to offset when base is zero
1438[info] - should normalize to base when offset is zero
1439[info] - should not normalize when both base and offset are non-zero
1440[info] QuadraticSolution boolean predicates
1441[info] - should identify zero solution correctly
1442[info] - should not identify non-zero solution as zero
1443[info] - should identify pure number when offset is zero
1444[info] - should not identify as pure number when offset is non-zero
1445[info] - should identify unity correctly
1446[info] - should not identify non-unity as unity
1447[info] - should always report as exact
1448[info] QuadraticSolution.branched
1449[info] - should compute correct coefficient for branch 0
1450[info] QuadraticSolution.add(Rational)
1451[info] - should add rational to base when base is pure number
1452[info] QuadraticSolution.add(Solution)
1453[info] - should add phi to psi
1454[info] QuadraticSolution.multiply(Solution)
1455[info] - should multiply phi by psi
1456[info] QuadraticSolution.*(Rational)
1457[info] - should scale both base and offset when both are scalars
1458[info] - should preserve branch when scaling
1459[info] QuadraticSolution equality
1460[info] - should be equal to itself
1461[info] - should be equal to another solution with same base, offset, and branch
1462[info] - should not be equal if branches differ
1463[info] - should not be equal if bases differ
1464[info] - should not be equal if offsets differ
1465[info] QuadraticSolution fuzzy equality
1466[info] - should be fuzzy equal to itself
1467[info] - should be fuzzy equal to similar solution
1468[info] - should not be fuzzy equal if branches differ
1469[info] QuadraticSolution.render
1470[info] - should render phi with its name
1471[info] - should render psi with its name
1472[info] - should render normalized form when offset is zero
1473[info] - should render with + for branch 0
1474[info] - should render with - for branch 1
1475[info] - should render complex solutions with appropriate prefix
1476[info] QuadraticSolution edge cases
1477[info] - should handle zero base and zero offset
1478[info] - should handle unity base with zero offset
1479[info] - should handle large rational values
1480[info] - should handle negative base values
1481[info] QuadraticSolution.approximation
1482[info] - should provide approximation for non-exact solutions
1483[info] - should handle approximation for pure number solutions
1484[info] QuadraticSolution with imaginary flag integration
1485[info] - should distinguish between real and imaginary solutions in rendering
1486[info] - should preserve imaginary flag through conjugate
1487[info] - should preserve imaginary flag through scaling (pending)
1488[info] QuadraticSolution toString
1489[info] - should delegate to render
1490Starting build for ProjectRef(file:/build/repo/,core) (number-core)... [2/6]
1491Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wvalue-discard, -Wnonunit-statement, -explain, -Wunused:imports, -Wunused:privates, -Wunused:locals, -Wconf:msg=Couldn't resolve a member:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1492[info] compiling 73 Scala sources and 5 Java sources to /build/repo/core/target/scala-3.8.1-RC1/test-classes ...
1493[warn] -- [E198] Unused Symbol Warning: /build/repo/core/src/test/scala/com/phasmidsoftware/number/core/applications/FibonacciSpec.scala:76:12
1494[warn] 76 | val q = t1 `plus` t2
1495[warn] | ^
1496[warn] | unused local definition
1497[warn] one warning found
1498[info] done compiling
1499Series: 0, 0.01𝛑, 0, -5.16771278004997E-6±0.00000000000072%, 0, 2.5501640398773455E-10±0.00000000000032%, 0, -5.992645293207921E-15±0.00000000000048%, 0, 8.214588661112824E-20±0.00000000000043%, ...
1500[info] FuzzyParserSpec:
1501[info] integer
1502[info] - should parse 1
1503[info] - should parse 6
1504[info] fuzz
1505[info] - should parse (42)
1506[info] - should not parse 42
1507[info] fraction
1508[info] - should parse .42
1509[info] exponent
1510[info] - should parse E-11
1511[info] - should parse E11
1512[info] - should parse e2
1513[info] nominal
1514[info] - should parse 1
1515[info] - should parse 6.67408
1516[info] - should parse 6.67408E-11
1517[info] fuzzyRep
1518[info] - should parse 1
1519[info] partial parsing
1520[info] - should parse 6.67408(31)E−11
1521[info] fuzzyRep
1522[info] - should parse 6.67408(31)E−11
1523[info] fuzzy
1524[info] - should be Exact(1)
1525[info] - should parse 6.67408(31)E−11
1526[info] - should parse 3.1415927(01)
1527[info] - should parse 3.1415927
1528[info] - should parse 16.5[2]
1529[info] PowerSeriesSpec:
1530[info] PowerSeries
1531[info] - should apply
1532[info] TaylorSeries
1533[info] - should approximate sine about x = 0
1534[info] PrimeSpec:
1535[info] Prime
1536[info] - should bits
1537[info] - should isProbablePrime
1538[info] - should isProbableOddPrime
1539[info] - should fermat
1540[info] - should implement Lucas for 7 and 71
1541[info] - should implement primeFactors
1542[info] - should implement primeFactorMultiplicity
1543[info] - should implement Lucas()
1544[info] - should implement testPrimitiveRoot
1545[info] - should implement primitiveRoot
1546[info] - should multiplicativeInverse
1547[info] - should multiplicativeInverse1
1548[info] - should multiplicativeInverse2
1549[info] - should validated
1550[info] - should next
1551[info] - should create primes from Mersenne numbers
1552[info] - should create (potential) Mersenne numbers
1553[info] - should get first 100 primes
1554[info] - should get first 1000 primes
1555[info] - should get primes < 1000
1556[info] - should test MillerRabin
1557[info] - should totient
1558[info] - should form toString correctly
1559[info] - should get the reciprocal period
156020:45:26,246 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.23
156120:45:26,247 |-INFO in ch.qos.logback.classic.util.ContextInitializer@3bf1fe1d - No custom configurators were discovered as a service.
156220:45:26,247 |-INFO in ch.qos.logback.classic.util.ContextInitializer@3bf1fe1d - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
156320:45:26,248 |-INFO in ch.qos.logback.classic.util.ContextInitializer@3bf1fe1d - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
156420:45:26,248 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/build/repo/core/target/scala-3.8.1-RC1/test-classes/logback-test.xml]
156520:45:26,387 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - Main configuration file URL: file:/build/repo/core/target/scala-3.8.1-RC1/test-classes/logback-test.xml
156620:45:26,387 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - FileWatchList= {/build/repo/core/target/scala-3.8.1-RC1/test-classes/logback-test.xml}
156720:45:26,387 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - URLWatchList= {}
156820:45:26,390 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@ee2f183 - value "logs/Number.log" substituted for "${HOME_LOG}"
156920:45:26,392 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
157020:45:26,392 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
157120:45:26,409 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
157220:45:26,444 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - NOTE: Writing to the console can be slow. Try to avoid logging to the
157320:45:26,444 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - console in production environments, especially in high volume systems.
157420:45:26,444 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also https://logback.qos.ch/codes.html#slowConsole
157520:45:26,445 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [FILE-ROLLING]
157620:45:26,445 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
157720:45:26,447 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@ee2f183 - value "logs/Number.log" substituted for "${HOME_LOG}"
157820:45:26,450 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1876074389 - setting totalSizeCap to 20 GB
157920:45:26,454 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1876074389 - Archive files will be limited to [10 MB] each.
158020:45:26,454 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1876074389 - Will use gz compression
158120:45:26,461 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1876074389 - Will use the pattern logs/archived/app.%d{yyyy-MM-dd}.%i.log for the active file
158220:45:26,466 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@48c0848c - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/archived/app.%d{yyyy-MM-dd}.%i.log.gz'.
158320:45:26,466 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@48c0848c - Roll-over at midnight.
158420:45:26,466 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@48c0848c - Setting initial period to 2026-01-13T19:44:53.795Z
158520:45:26,470 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
158620:45:26,472 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Active log file name: logs/Number.log
158720:45:26,472 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Setting currentFileLength to 0 for logs/Number.log
158820:45:26,472 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - File property is set to [logs/Number.log]
158920:45:26,473 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [ASYNC] not referenced. Skipping further processing.
159020:45:26,473 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to DEBUG
159120:45:26,473 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
159220:45:26,474 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to DEBUG
159320:45:26,474 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [FILE-ROLLING] to Logger[ROOT]
159420:45:26,474 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@7c758a9f - End of configuration.
159520:45:26,479 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6502027b - Registering current configuration as safe fallback point
159620:45:26,479 |-INFO in ch.qos.logback.classic.util.ContextInitializer@3bf1fe1d - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 231 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
1597
1598[info] ConstantsSpec:
1599[info] constants
1600[info] - should have root2
1601[info] - should have root2 a
1602[info] - should have root3
1603[info] - should have root5
1604[info] - should have G
1605[info] - should have gamma
1606[info] - should have avagadro
1607[info] - should have boltzmann
1608[info] - should have planck
1609[info] - should have c
1610[info] - should have mu
1611[info] - should have phi
1612[info] - should have alpha
1613[info] toString
1614[info] - should work for G
1615[info] FactorSpec:
1616[info] Factor
1617[info] - should add pure numbers
1618[info] - should add roots
1619[info] - should multiply PureNumber by Other
1620[info] - should multiply Other by PureNumber
1621[info] - should multiply Other by Ln
1622[info] - should multiply Other by NthRoot
1623[info] - should handle percentages
1624[info] - should raise
1625[info] - should clean
1626[info] - should convert
1627[info] - should isAdditive
1628[info] - should isA
1629[info] - should modulate
1630[info] - should render
1631[info] - should sPiAlt2
1632[info] - should sPiAlt1
1633[info] - should sPiAlt0
1634[info] - should apply
1635[info] - should sPi
1636[info] - should sE and sEi
1637[info] LazyFunctionSpec:
1638[info] Compose
1639[info] - should yield identity result when complementary functions composed
1640[info] - should form Identity when complementary functions provided
1641[info] - should form Composed when non-complementary functions provided (1)
1642[info] - should form Composed when non-complementary functions provided (2)
1643[info] PotHolesSpec:
1644[info] PotHoles
1645[info] - should cost 0
1646[info] - should cost 1
1647[info] - should cost 3
1648[info] - should cost 8
1649[info] - should cost 15
1650[info] - should cost 16
1651[info] - should cost 10
1652[info] - should cost 11
1653[info] - should cost random
1654[info] ExpressionParserSpec:
1655[info] DoubleExpressionParser.factor
1656[info] - should parse 3.1415927
1657[info] DoubleExpressionParser(1)
1658[info] - should be 1.0
1659[info] - should parse (1)
1660[info] - should fail pi
1661[info] DoubleExpressionParser.term
1662[info] - should parse 1*2
1663[info] - should parse 1/2
1664[info] - should parse 3.1415927
1665[info] - should parse (1)
1666[info] - should fail pi
1667[info] - should fail 1+2
1668[info] DoubleExpressionParser.expr
1669[info] - should parse 1 as 1.0
1670[info] - should parse 1+1 as 2.0
1671[info] - should parse 1*2+1 as 3.0
1672[info] - should parse 1*2+1-1.5 as 1.5
1673[info] - should parse 1/0 as infinite
1674[info] - should parse 1*2+1-3/2 as 1.5
1675[info] - should parse 10/3 as ...
1676[info] - should succeed for DoubleExpressionParser(2+1-3/2)
1677[info] - should succeed DoubleExpressionParser(5*(6+1-(3/2))/4)
1678[info] - should succeed DoubleExpressionParser(5*(6+1-3/2)/4) even without explicit parentheses
1679[info] - should fail to parse 1*2+1-pi/2
1680[info] - should fail to parse (1?2)
1681[info] RationalExpressionParser(1)
1682[info] - should be 1
1683[info] RationalExpressionParser(1+1)
1684[info] - should be 2/1
1685[info] - should parse 1*2+1 as 3/1
1686[info] - should parse 1*2+1-3/2 as 3/2
1687[info] RationalExpressionParser(1/0)
1688[info] - should be infinite
1689[info] (
1690[info] - should fail
1691[info] - should fail 1+2=2
1692[info] IntExpressionParser(3/2)
1693[info] - should fail
1694[info] LazyNumberRationalSpec:
1695[info] rat1
1696[info] - should be 1
1697[info] - should be -1 after negate
1698[info] - should be 0 after minus(1)
1699[info] rat2
1700[info] - should be 2
1701[info] - should be 4 when multiplied by itself
1702[info] - should be 1 when divided by itself
1703[info] - should be 3 when added to one
1704[info] - should be 6 when added to one and three
1705[info] - should be 3 when added to one by explicit function
1706[info] for comprehension
1707[info] - should give 4
1708[info] - should give 8
1709[info] FactorialSpec:
1710[info] Factorial
1711[info] - should apply successfully
1712[info] - should fail on negative numbers
1713[info] InfiniteSumSpec:
1714[info] harmonic series
1715[info] - should asLazyList
1716[info] - should apply
1717[info] - should toDouble
1718[info] Leibniz
1719[info] - should asLazyList
1720[info] - should apply
1721[info] - should toDouble
1722[info] Euler
1723[info] - should asLazyList
1724[info] - should apply
1725[info] - should toDouble
1726[info] Stefan-Boltzmann
1727[info] - should asLazyList
1728[info] - should apply
1729[info] - should toDouble
1730[info] NumberLikeSpec:
1731[info] NumberLike
1732[info] - should asJavaNumber
1733[info] - should asNumber
1734[info] - should maybeFactor
1735[info] - should isExact
1736[info] - should memberOf
1737[info] - should render
1738[info] FuzzinessSpec:
1739[info] generalNumber
1740[info] - should parse 1.
1741[info] - should parse 1.0
1742[info] - should parse 1.00
1743[info] - should parse 1.000 as fuzzy
1744[info] - should parse G as fuzzy
1745[info] maybeNumber
1746[info] - should
1747[info] number
1748[info] - should
1749[info] StringParser
1750[info] - should
1751[info] fuzz
1752[info] - should parse *
1753[info] - should parse ...
1754[info] - should parse (5)
1755[info] - should parse (15)
1756[info] - should fail to parse (315)
1757[info] - should fail to parse ..
1758[info] FuzzOps
1759[info] - should understand ...
1760[info] exponent
1761[info] - should parse E-11
1762[info] numberWithFuzziness
1763[info] - should parse 1.0*
1764[info] - should parse 1.0...
1765[info] - should parse G
1766[info] - should parse alpha
1767[info] Fuzz.toString
1768[info] - should work for 1/0.5/Box
1769[info] - should work for 1/0.005/Box
1770[info] - should work for 1/0.5/Gaussian
1771[info] - should work for 1/0.005/Gaussian
1772[info] - should work for Planck
1773[info] - should work for Avagadro
1774[info] - should work for 3.1415927
1775[info] - should work for 3.1416
1776[info] parse
1777[info] - should work for 2.*
1778[info] createFuzz
1779[info] - should work for 0
1780[info] - should work for 1
1781[info] - should work for 5
1782[info] render
1783[info] - should render Pi
1784[info] - should render Planck
1785[info] - should render Avagadro
1786[info] Box.wiggle
1787[info] - should be likely for 1.251
1788[info] Fuzziness.wiggle
1789[info] - should be likely for 1.251 (box)
1790[info] Box.wiggle
1791[info] - should be likely for 5.0040
1792[info] Gaussian.wiggle
1793[info] - should be likely for 5.0040
1794[info] - should define the following ranges
1795[info] - should be likely.
1796[info] probability
1797[info] - should work for a box
1798[info] - should work for a Gaussian
1799[info] map
1800[info] - should work
1801[info] power
1802[info] - should work for e∧x
1803[info] fuzz
1804[info] - should work
1805[info] ContextSpec:
1806[info] Context
1807[info] - should or
1808[info] - should and
1809[info] - should qualifyingField
1810[info] - should fieldQualifies
1811[info] - should not
1812[info] - should AnyRoot
1813[info] - should AnyLog
1814[info] - should AnyScalar
1815[info] ShuntingYardParserSpec:
1816[info] ShuntingYardParser
1817[info] - should parseInfix 1
1818[info] - should parseInfix 1 + 2
1819[info] - should parseInfix ( 1 + 2 ) * 3
1820[info] - should parseInfix ( ( ( 4 + 5 ) * ( 2 + 3 ) + 6 ) / ( 8 + 7 ) ) ∧ 9
1821[info] - should parseInfix ( ( ( ( 4 + ( 4 × ( 2 / ( 1 − 5 ) ) ) ) ∧ 2 ) ∧ 3 )
1822[info] - should parseInfix 3 + 4 × 2 / ( 1 − 5 ) ∧ 2 ∧ 3
1823[info] - should parseInfix ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )
1824[info] - should parse Infix and evaluate: 9
1825[info] - should parse Infix and evaluate: 0.5
1826[info] - should parse Infix and evaluate: sqrt(3)
1827[info] - should parse Infix and evaluate: sin(pi)
1828[info] - should parse Infix and evaluate: sin(pi/2)
1829[info] - should shuntingYard
1830[info] - should shuntingYard w/o spaces
1831[info] - should operator
1832Warning: Polar r is zero: ComplexPolar(0,𝛑,1)
1833Warning: Polar r is zero: ComplexPolar(0,𝛑,1)
1834Warning: Polar r is zero: ComplexPolar(0,-𝛑,1)
1835[info] ErrorCommutativeMonoidSpec:
1836[info] Abstracting advocacy communication into lawful scalar folding
1837[info] - should match decoupled parallel error folding with direct Number addition (all addition) !!! IGNORED !!!
1838[info] - should match decoupled parallel error folding with direct Number multiplication (all multiplication) !!! IGNORED !!!
1839[info] MillSpec:
1840[info] Mill
1841[info] - should pop
1842[info] - should push
1843[info] - should iterate
1844[info] - should empty
1845[info] - should apply()
1846[info] - should apply(1)
1847[info] - should process empty list of Items
1848[info] - should create a Mill from list of Items: 42, 37, +
1849[info] - should accept list of Items: 42, 37, +
1850[info] - should process list of Items: 42, 37, +
1851[info] - should process list of Items: 42, 37, -
1852[info] - should process list of Items with Swap: 42, 37, Swap, -
1853[info] - should process list of Items with Noop: 42, 37, +, Noop
1854[info] - should process list of Items with Clr: 42, 37, +, c
1855[info] - should process Noop
1856[info] - should process list of Items: 3, 2, ∧
1857[info] - should process list of Items: 7, chs
1858[info] - should process list of Items: 42, 37, +, 2, *
1859[info] - should process list of Items: 2, inv
1860[info] - should process a String: 42 37 + 2 *
1861[info] parse and evaluate
1862[info] - should parse and evaluate: 2 37 + 2 *
1863[info] - should parse and evaluate: 2 3 ∧
1864[info] - should parse and evaluate: 2 3 /
1865[info] - should parse and evaluate: 2 v
1866[info] - should parse and evaluate: 73 24 <> -
1867[info] - should parse and evaluate: 𝛑 cos
1868[info] - should parse and evaluate: 𝛑 sin
1869[info] - should parse and evaluate: 𝜀 ln
1870[info] - should parse and evaluate: 2 exp
1871[info] - should parse and evaluate: 12 34 + 56 + 78 - 90 + 12 -
1872[info] - should parse and evaluate: 3696
1873[info] - should parse and evaluate: 207
1874[info] - should parse and evaluate: 207 with leading space
1875[info] - should parse and evaluate: 207 with trailing space
1876[info] - should parse and evaluate: 9
1877[info] - should parse 3 5 + 7 2 – *
1878[info] - should parse 3 4 2 × 1 5 − 2 3 ∧ ∧ ÷ +
1879[info] - should parse and evaluate: 220xxxx with trailing space
1880[info] - should parse infix
18811.4953487812212205
1882Warning: Polar r is zero: ComplexPolar(0,𝛑,1)
1883Warning: Polar r is zero: ComplexPolar(0,𝛑,1)
1884Warning: Polar r is zero: ComplexPolar(0,-𝛑,1)
1885Seed length: 3457
1886800
1887Standard: 12.4
1888Karatsuba: 6.4
188948.387096774193544
1890BiFunction{𝛗 + 1}
1891phi2 = 2.6180339887498950(47)
1892psi2 = 0.3819660112501051(67)
1893phi = 1.6180339887498950(47), expected = 1.6180339887498950*
1894psi = -0.6180339887498949(67)
1895𝛗
1896solution = Solution: -0.5 + + √1.25, expected = Solution: -0.5 + + √1.25
1897solution = 0.6180339887498949(37)
1898psi.abs = Some(Some(0.6180339887498949)), expected = Some(Some(0.6180339887498949))
1899actual = Solution: 1 + + √5, expected = 3.236067977499790(42)
1900phi = 𝛗
1901phi add Real(one) = 2.6180339887498950(55)
1902phi = 𝛗
1903phi add Real(one) = 0.6180339887498949(47)
1904phi = 𝛗
1905phi add Real(one) = 3.6180339887498950(55)
1906phi=𝛗; phi.power(1) = 𝛗
1907phi∧3 = 4.23606797749979±0.0000000000017%. expected=Solution: 2 + + √5
1908expectedValue = 4.2360679774997900*
1909phi∧3 = 6.854101966249686±0.0000000000014%. expected=Solution: 3.5 + + √11.25
1910equation = Quadratic Equation: x∧2 - 1x - 1 = 0
1911quadratic (transformed equation) = Quadratic Equation: x∧2 - 3x + 1 = 0
1912equation = Quadratic Equation: x∧2 - 1x - 1 = 0
1913Solution: 1.5 + + √1.25
1914Solution: 1.5 + - √1.25
1915quadratic.value = Solution: 1.5 + + √1.25
1916[info] RootSpec:
1917[info] Root
1918[info] - should work from first principles
1919[info] - should evaluate Phi correctly
1920[info] - should evaluate Phi∧2 correctly
1921[info] - should evaluate Phi + Psi
1922[info] - should evaluate Phi * Psi
1923[info] - should evaluate Phi + Phi
1924[info] - should evaluate 2 * Phi
1925[info] - should evaluate 2 + Phi
1926[info] - should mind its ps and qs
1927[info] - should materialize
1928[info] - should evaluateAsIs
1929[info] - should maybeFactor
1930[info] - should isExact
1931[info] - should render
1932[info] - should asNumber
1933[info] - should depth
1934[info] - should discriminant
1935[info] - should isAtomic
1936[info] - should evaluate(AnyContext)
1937[info] SignificantSpaceParsersSpec:
1938[info] SignificantSpaceParsers
1939[info] - should stringParser
1940[info] - should match for RegexOps
1941[info] - should fail for RegexOps
1942[info] - should ParserOps
1943[info] - should ParserOptionOps 1
1944[info] - should ParserOptionOps 2
1945[info] - should trim
1946[info] - should repSepSp
1947[info] LinearSpec:
1948[info] Linear
1949[info] - should add 1
1950[info] - should branches
1951[info] - should isExact
1952[info] - should render
1953[info] - should approximation
1954[info] - should signum
1955[info] - should abs
1956[info] - should scale
1957[info] - should negate
1958[info] - should product
1959[info] - should solutionSquared
1960[info] - should invert
1961[info] - should add 2
1962[info] - should multiply
1963[info] - should power 2
1964[info] - should apply(Solution) to get half
1965[info] RealSpec:
1966[info] create
1967[info] - should yield Right(1)
1968[info] - should yield Right(1, Radian)
1969[info] toString
1970[info] - should yield 1
1971[info] - should work for Pi
1972[info] - should work for E
1973[info] - should work for E∧2
1974[info] - should work for E∧3
1975[info] - should work for E∧4
1976[info] - should work for E∧10
1977[info] render
1978[info] - should work for square root E
1979[info] toDouble
1980[info] - should yield 1
1981[info] apply
1982[info] - should work for "1"
1983[info] - should work for "𝛑"
1984[info] - should work for 1
1985[info] asReal
1986[info] - should work for real
1987[info] - should work for number
1988[info] plus
1989[info] - should add 1 and 2
1990[info] - should add 1 to pi
1991[info] - should add 1 to e
1992[info] minus
1993[info] - should negate 1
1994[info] subtract
1995[info] - should subtract 1 from 2
1996[info] multiply
1997[info] - should multiply 1 and 2
1998[info] invert
1999[info] - should invert 1
2000[info] division
2001[info] - should divide 1 by 2
2002[info] power
2003[info] - should work for squaring PureNumber
2004[info] - should work for squaring SquareRoot
2005[info] sqrt
2006[info] - should work for easy ints
2007[info] sin
2008[info] - should be zero for pi
2009[info] - should work for 0
2010[info] - should work for Radian/2
2011[info] - should work for Radian/6
2012[info] - should work for Radian/3
2013[info] - should work for Radian/4
2014[info] - should work for One
2015[info] cos
2016[info] - should be zero for pi
2017[info] - should work for 0
2018[info] - should work for Pi/2
2019[info] - should work for Pi/3
2020[info] - should work for Pi/6
2021[info] tan
2022[info] - should be zero for 0
2023[info] - should be zero for pi
2024[info] - should work for Pi/2
2025[info] - should work for Pi/3
2026[info] - should work for Pi/6
2027[info] atan
2028[info] - should be 0Pi for 0/1
2029[info] - should be pi/4 for 1/1
2030[info] - should be 0Pi for 0/-1
2031[info] - should be Pi / 3 for root(3)
2032[info] - should be 7 Pi / 6 for 1/-root(3)
2033[info] - should be 11 Pi / 6 for -1/2
2034[info] - should be 3 pi / 4 for 1/-1
2035[info] - should evaluate atan of 1 over -0
2036[info] - should evaluate atan of -1 over 0
2037[info] exp
2038[info] - should be E for 1
2039[info] - should be 1 for 0
2040[info] - should be e∧2 for 2
2041[info] ln
2042[info] - should be 1 for E
2043[info] - should be 0 for 1
2044[info] - should be 2 for E∧2
2045[info] compare
2046[info] - should work for 1, 1
2047[info] - should work for 1, 2
2048[info] - should work for 2, 1
2049[info] Numeric toInt
2050[info] - should work for 1
2051[info] - should work for BigInt 1
2052[info] - should work for 1.0
2053[info] Numeric toLong
2054[info] - should work for 1
2055[info] - should work for 1.0
2056[info] Numeric toDouble
2057[info] - should work for 1
2058[info] Numeric plus
2059[info] - should work for 1
2060[info] - should work for 1.0
2061[info] Numeric minus
2062[info] - should work for 1
2063[info] - should work for 1.0
2064[info] Numeric fromInt
2065[info] - should work for -1
2066[info] - should work for 0
2067[info] - should work for 1
2068[info] Numeric parseString
2069[info] - should work for -1
2070[info] - should work for 0
2071[info] - should work for 1
2072[info] - should work for 6.67430(15)E-11
2073[info] Real div
2074[info] - should work for 1/2
2075[info] - should work for 2/2
2076[info] - should work for 2/3
2077[info] RealOps
2078[info] - should work for 2 + Real(3)
2079[info] - should work for 2 * Real(3)
2080[info] - should work for 1 :/ 2
2081[info] multiply
2082[info] - should work for pure numbers
2083[info] RealAlgebraicInstancesSpec:
2084[info] realTruncatedDivisionCRing (tquot/tmod/tquotMod + order)
2085[info] - should truncate quotient toward zero and compute remainder !!! IGNORED !!!
2086[info] - should expose an order consistent with Real.RealIsOrdering
2087[info] PolynomialSpec:
2088[info] Polynomial
2089[info] - should apply 0
2090[info] - should apply 1
2091[info] - should apply 2
2092[info] - should degree
2093[info] - should derivative 1
2094[info] - should derivative 2
2095[info] - should coefficients
2096[info] - should derivativeN
2097[info] - should nthDerivative
2098[info] ComplexParserSpec:
2099[info] ComplexParser
2100[info] - should doParse
2101[info] FieldSpec:
2102[info] Field
2103[info] - should isExact
2104[info] - should multiply i by itself correctly
2105[info] - should add
2106[info] - should take the natural log of i
2107[info] - should take the natural log of 2
2108[info] NumberSetSpec:
2109[info] NumberSet
2110[info] - should maybeSuperSet
2111[info] - should isMember (Number)
2112[info] - should isMember (Real)
2113[info] - should belongsToSetExclusively
2114[info] - should not belongsToSetExclusively
2115[info] NumberLike
2116[info] - should memberOf
2117[info] - should memberOf(set)
2118[info] FuzzySpec:
2119[info] Fuzzy
2120[info] - should same
2121[info] FuzzyNumberSpec:
2122[info] create
2123[info] - should yield 1 with absolute fuzz
2124[info] - should yield 1 with relative fuzz
2125[info] Fuzz.toString
2126[info] - should work for 1/0.5/Box
2127[info] - should work for 1/0.005/Box
2128[info] - should work for 1/0.5/Gaussian
2129[info] - should work for 1/0.005/Gaussian
2130[info] parse
2131[info] - should work for 1.*
2132[info] - should work for 1.00(5)
2133[info] - should work for 1.000(50)
2134[info] - should work for 1.00(05)
2135[info] - should parse gamma
2136[info] - should parse phi
2137[info] - should parse G
2138[info] - should parse alpha
2139[info] - should parse mu
2140[info] plus
2141[info] - should add 1 and 2
2142[info] - should add 1.* and 2
2143[info] - should add 1 and 2.*
2144[info] - should add 1.* and 2.*
2145[info] times
2146[info] - should multiply 1 and 2
2147[info] - should multiply 1.* and 2
2148[info] - should multiply 1 and 2.*
2149[info] - should multiply 1.* and 2.*
2150[info] - should multiply 1.* and 2.* with normalization of fuzz
2151[info] - should work for (fuzzy 3)∧2 (i.e. an constant Int power (Box))
2152[info] -
2153[info] - should work for 1.*
2154[info] negate
2155[info] - should work for 1.*
2156[info] power
2157[info] - should work for (fuzzy 3)∧2 (i.e. an constant Int power (Box))
2158[info] - should work for (fuzzy 3)∧2 (i.e. an constant Int power (Gaussian))
2159[info] - should work for 2**2 (i.e. an constant Int power)
2160[info] - should work for 2**2 (i.e. a fuzzy Number power)
2161[info] compare
2162[info] - should find 1.* equivalent to 1.*
2163[info] - should find 1 smaller than 2
2164[info] sin
2165[info] - should work for 0
2166[info] - should work for pi
2167[info] - should work for 2pi
2168[info] - should work for pi/2
2169[info] - should work for 3pi/2
2170[info] - should work for 3.141592653589793
2171[info] - should work for 3.141592653589793 backwards
2172[info] cos
2173[info] - should work for 0
2174[info] - should work for pi
2175[info] - should work for 2pi
2176[info] - should work for pi/2
2177[info] - should work for 3pi/2
2178[info] - should work for 3.141592653589793
2179[info] - should work for 3.141592653589793 backwards
2180[info] tan
2181[info] - should work for 0
2182[info] - should work for pi
2183[info] - should work for 2pi
2184[info] - should work for pi/2
2185[info] - should work for 3pi/2
2186[info] - should work for 3.141592653589793
2187[info] - should work for 3.141592653589793 backwards
2188[info] exp
2189[info] - should work for non-exact 1
2190[info] compare
2191[info] - should work for 1, 1
2192[info] same
2193[info] - should think 1 and 1 are the same
2194[info] - should think pi and pi are the same
2195[info] isProbablyZero
2196[info] - should think pi and pi are the same (1)
2197[info] - should think pi and pi are the same (2)
2198[info] make(Fuzziness)
2199[info] - should work
2200[info] - should implement asComparedWith
2201[info] foucault
2202[info] - should do part of the calculation
2203[info] - should calculate length of Foucault's pendulum but with relative box fuzziness
2204[info] - should calculate length of Foucault's pendulum
2205[info] - should calculate the acceleration due to gravity based on the London Foucault's pendulum
2206[info] BumperatorSpec:
2207[info] Bumperator
2208[info] - should hasNext 0
2209[info] - should hasNext 1
2210[info] - should hasNext 2
2211[info] - should next 1
2212[info] - should toList 1
2213[info] NumberSpec:
2214[info] create
2215[info] - should yield Right(1)
2216[info] - should yield Left(Right(bigBigInt))
2217[info] - should yield Right(1, Fuzz)
2218[info] - should yield Right(1, Radian)
2219[info] - should yield ExactNumber(1, Euler)
2220[info] - should yield ExactNumber(1/2, Euler)
2221[info] - should yield Right(1, Radian, Fuzz)
2222[info] nominalValue
2223[info] - should yield Right(1)
2224[info] - should yield Left(Right(bigBigInt))
2225[info] toNominalRational
2226[info] - should yield Some(1)
2227[info] toString
2228[info] - should yield 1
2229[info] - should work for Pi
2230[info] - should work for E
2231[info] - should work for Radian as scalar
2232[info] - should work for E as scalar (rel fuzzy)
2233[info] - should work for 1 scaled as Radian
2234[info] - should work for E∧2
2235[info] - should work for E∧3
2236[info] - should work for E∧4
2237[info] - should work for E∧10
2238[info] - should work for square root E
2239[info] - should work for i
2240[info] - should work for e∧ix
2241[info] normalize
2242[info] - should work for E as scalar (abs fuzzy)
2243[info] - should work for E∧2 as Real
2244[info] - should work for E, SquareRoot
2245[info] - should work for NatLog, SquareRoot
2246[info] - should work for NatLog, SquareRoot approx
2247[info] - should multiply root2 and root2
2248[info] - should multiply sin by sin
2249[info] - should work for easy Rational
2250[info] toDouble
2251[info] - should yield 1
2252[info] isValid
2253[info] - should yield true for 1
2254[info] - should yield false for None
2255[info] parse
2256[info] - should work for 1
2257[info] - should work for 3/2
2258[info] - should work for 3.1415927
2259[info] - should work for BigInt
2260[info] - should work for Radian
2261[info] - should work for pi
2262[info] - should work for e
2263[info] - should fail with x
2264[info] - should fail for ""
2265[info] apply
2266[info] - should fail for ""
2267[info] - should work for "1"
2268[info] - should work for "2147483648"
2269[info] - should work for "3.1415927"
2270[info] - should work for 3.1416
2271[info] - should work for "𝛑"
2272[info] - should work for 1
2273[info] - should work for bigBigInt
2274[info] - should work for Rational(1,2)
2275[info] - should work for math.pi
2276[info] - should work for nothing
2277[info] - should work for BigDecimal(3.1415927)
2278[info] - should work for 3.1415927
2279[info] - should work for 3.1415926535897932384626433
2280[info] - should work for 0.5
2281[info] - should work for 1.23
2282[info] - should work for 1.234
2283[info] - should work for 1.23400
2284[info] - should support exact strings
2285[info] Number.parse
2286[info] - should parse boltzmann
2287[info] - should fail to parse boltzmann with alternative minus
2288[info] - should parse planck
2289[info] - should parse c
2290[info] - should parse avagadro
2291[info] FuzzOps
2292[info] - should get mu
2293[info] - should get G using FuzzStringOps
2294[info] - should get alpha
2295[info] specialize
2296[info] - should work for 1
2297[info] - should work for BigInt 1
2298[info] - should work for BigInt(1+Int.MaxValue)
2299[info] - should work for Rational(1)
2300[info] - should work for Rational.half
2301[info] - should work for 0.5
2302[info] - should work for 1.0
2303[info] - should work for nothing
2304[info] scale
2305[info] - should work for PureNumber, PureNumber
2306[info] - should work for Radian, Radian
2307[info] - should work for PureNumber, Radian
2308[info] - should work for Radian, PureNumber
2309[info] - should work for PureNumber, NatLog
2310[info] - should work for NatLog, PureNumber
2311[info] - should work for 2E, PureNumber
2312[info] - should work for 2E, PureNumber but comparing against NatLog * NatLog
2313[info] - should work for PureNumber, 2E (same as before but with parameters to === reversed
2314[info] - should work for PureNumber, 2E (same as before but using NatLog * NatLog and parameters to === reversed
2315[info] - should work for NatLog, Radian
2316[info] - should work for Radian, NatLog
2317[info] - should work for Log2, PureNumber
2318[info] - should work for Log10, PureNumber
2319[info] - should work for Log2, NatLog
2320[info] - should work for SquareRoot, PureNumber
2321[info] - should work for Root2s
2322[info] - should work for CubeRoot, PureNumber
2323[info] - should work for SquareRoot, CubeRoot
2324[info] - should work for PureNumber, SquareRoot
2325[info] alignFactors
2326[info] - should work for PureNumber, PureNumber
2327[info] - should work for PureNumber, Radian
2328[info] - should work for Radian, PureNumber
2329[info] - should work for Radian, Radian
2330[info] alignTypes
2331[info] - should work for Int,Int
2332[info] - should work for Int Int(Radian)
2333[info] - should work for Int,BigInt
2334[info] - should work for BigInt,Int
2335[info] - should work for Int,Rational
2336[info] - should work for Rational,Int
2337[info] - should work for Int,Double
2338[info] - should work for Double,Int
2339[info] - should work for Int,None
2340[info] - should work for None,Int
2341[info] - should work for BigInt,BigInt
2342[info] - should work for BigInt,Rational
2343[info] - should work for Rational,BigInt
2344[info] - should work for BigInt,Double
2345[info] - should work for Double,BigInt
2346[info] - should work for BigInt,None
2347[info] - should work for None,BigInt
2348[info] - should work for Rational,Rational
2349[info] - should work for Rational,Double
2350[info] - should work for Double,Rational
2351[info] - should work for Rational,None
2352[info] - should work for None,Rational
2353[info] - should work for Double,Double
2354[info] - should work for Double,None
2355[info] - should work for None,Double
2356[info] - should work for None,None
2357[info] plus
2358[info] - should add 1 and 2
2359[info] - should add BigInt 1 and 2
2360[info] - should add Rational 1 and 2
2361[info] - should add Double 1 and 2
2362[info] - should add Double 1 and Radian
2363[info] - should add Radian and 2Pi
2364[info] - should add 1 to pi
2365[info] - should add 1 to e
2366[info] - should add 1 to √2
2367[info] - should add 1 to √3
2368[info] - should add 1 to √5
2369[info] - should add pi to -pi
2370[info] minus
2371[info] - should negate 1
2372[info] - should negate BigInt 1
2373[info] - should negate Rational 1
2374[info] - should negate Double 1
2375[info] subtract
2376[info] - should subtract 1 from 2
2377[info] - should subtract BigInt 1 from 2
2378[info] - should subtract Rational 1 from 2
2379[info] - should subtract Double 1 from 2
2380[info] multiply
2381[info] - should multiply 1 and 2
2382[info] - should multiply BigInt 1 and 2
2383[info] - should multiply Rational 1 and 2
2384[info] - should multiply Double 1 and 2
2385[info] - should multiply 2 and Radian
2386[info] - should multiply Radian and 2
2387[info] - should multiply rational by Int
2388[info] invert
2389[info] - should invert 1
2390[info] - should invert BigInt 1
2391[info] - should invert 2
2392[info] - should invert BigInt 2
2393[info] - should invert Rational 2
2394[info] - should invert Double pi
2395[info] division
2396[info] - should divide 1 by 2
2397[info] - should divide BigInt 1 by 2
2398[info] - should divide Rational 1 by 2
2399[info] - should divide Double 1 by Double Radian
2400[info] **
2401[info] - should work for 2∧2
2402[info] power
2403[info] - should work for squaring PureNumber
2404[info] - should work for squaring SquareRoot
2405[info] - should work for squaring CubeRoot
2406[info] - should work for cubing cube-root2
2407[info] - should work for squaring NatLog
2408[info] - should work for squaring Log2
2409[info] - should power by one half
2410[info] - should sqrt
2411[info] - should power 1/2
2412[info] sqrt
2413[info] - should work for easy ints
2414[info] - should work for BigInt
2415[info] - should work for negative numbers
2416[info] sin
2417[info] - should be zero for pi
2418[info] - should work for 0
2419[info] - should be one for pi/2
2420[info] - should work for Radian/2
2421[info] - should work for Radian/6
2422[info] - should work for Radian/3
2423[info] - should work for Radian/4
2424[info] - should work for One
2425[info] - should work for 1/12
2426[info] cos
2427[info] - should be zero for pi
2428[info] - should work for 0
2429[info] - should work for Pi/2
2430[info] - should work for Pi/3
2431[info] - should work for Pi/6
2432[info] tan
2433[info] - should be zero for 0
2434[info] - should be zero for pi
2435[info] - should work for Pi/2
2436[info] - should work for Pi/3
2437[info] - should work for Pi/6
2438[info] atan
2439[info] - should be 0Pi for 0/1
2440[info] - should be pi/4 for 1/1
2441[info] - should be 0Pi for 0/-1
2442[info] - should be Pi / 3 for root(3)
2443[info] - should be 7 Pi / 6 for 1/-root(3)
2444[info] - should be 11 Pi / 6 for -1/2
2445[info] - should be 3 pi / 4 for 1/-1
2446[info] - should evaluate atan of 1 over -0
2447[info] - should evaluate atan of -1 over 0
2448[info] exp
2449[info] - should be E for 1
2450[info] - should be 1 for 0
2451[info] - should be e∧2 for 2
2452[info] ln
2453[info] - should be 1 for E
2454[info] - should be 0 for 1
2455[info] - should be 2 for E∧2
2456[info] - should be 0.69... for 2
2457[info] log
2458[info] - should be 1 for E
2459[info] - should be 0 for 1
2460[info] - should be 0.69... for 2
2461[info] - should lg 1024
2462[info] - should log exact
2463[info] toInt
2464[info] - should work for 1
2465[info] - should work for BigInt 1
2466[info] - should work for Rational 1
2467[info] - should work for too big
2468[info] - should work for 3.14...
2469[info] - should work for pi
2470[info] compare
2471[info] - should work for 1, 1
2472[info] - should work for 1, 2
2473[info] - should work for 2, 1
2474[info] - should work for BigInt 1, 1
2475[info] - should work for BigInt 1, 2
2476[info] - should work for BigInt 2, 1
2477[info] - should work for Rational 1, 1
2478[info] - should work for Rational 1, 2
2479[info] - should work for Rational 2, 1
2480[info] - should work for Double 1, 1
2481[info] - should work for Double 1, 2
2482[info] - should work for Double 2, 1
2483[info] Numeric toInt
2484[info] - should work for 1
2485[info] - should work for BigInt 1
2486[info] - should work for Rational 1
2487[info] - should work for 1.0
2488[info] Numeric toLong
2489[info] - should work for 1
2490[info] - should work for BigInt 1
2491[info] - should work for Rational 1
2492[info] - should work for 1.0
2493[info] Numeric toDouble
2494[info] - should work for 1
2495[info] - should work for BigInt 1
2496[info] - should work for Rational 1
2497[info] - should work for 1.0
2498[info] Numeric toFloat
2499[info] - should work for 1
2500[info] - should work for BigInt 1
2501[info] - should work for Rational 1
2502[info] - should work for 1.0
2503[info] Numeric plus
2504[info] - should work for 1
2505[info] - should work for BigInt 1
2506[info] - should work for Rational 1
2507[info] - should work for 1.0
2508[info] Numeric minus
2509[info] - should work for 1
2510[info] - should work for BigInt 1
2511[info] - should work for Rational 1
2512[info] - should work for 1.0
2513[info] Numeric fromInt
2514[info] - should work for -1
2515[info] - should work for 0
2516[info] - should work for 1
2517[info] Numeric parseString
2518[info] - should work for -1
2519[info] - should work for 0
2520[info] - should work for 1
2521[info] - should work for 6.67430(15)E-11
2522[info] Numeric div
2523[info] - should work for 1/2
2524[info] - should work for 2/2
2525[info] - should work for 2/3
2526[info] NumberOps
2527[info] - should work for 2 + Number(3)
2528[info] - should work for 2 * Number(3)
2529[info] - should work for 1 :/ 2
2530[info] isImaginary
2531[info] - should be true for i and its multiples
2532[info] - should be false for all ordinary numbers
2533[info] multiply
2534[info] - should work for pure numbers
2535[info] - should work for complex numbers
2536[info] - should work for i
2537[info] - should multiply root2 and 3
2538[info] - should multiply cube-root2 and 3
2539[info] - should multiply 3 and root2
2540[info] - should multiply 3 and cube-root2
2541[info] field operations
2542[info] - should work with asReal
2543[info] ExpressionMatchersSpec:
2544[info] value
2545[info] - should work with value on Literal
2546[info] - should work with value on One
2547[info] - should work with value on Number.one
2548[info] - should work with value on FuzzyNumber
2549[info] - should fail on non-value
2550[info] matchValue
2551[info] - should work with value 1
2552[info] |
2553[info] - should work with | 1 or 2
2554[info] matchSimpler
2555[info] - should matchSimpler 1
2556[info] - should simplifyTrivial 1
2557[info] - should handle Sum
2558[info] - should handle Product
2559[info] - should handle Power
2560[info] - should cancel -1 and - 1
2561[info] - should cancel multiplication and division
2562[info] - should simplify sqrt(7)∧2
2563[info] - should cancel 1 and - -1
2564[info] - should cancel 1 and - -1 b
2565[info] - should cancel 2 * 1/2 (a)
2566[info] - should cancel 2 * 1/2 (b)
2567[info] - should cancel ∧2 and sqrt for 7
2568[info] - should show that lazy evaluation sometimes works even when you don't use it (a)
2569[info] - should cancel multiplication and division 2
2570[info] - should cancel multiplication and division backwards
2571[info] - should cancel 1 and - -1 (a)
2572[info] - should cancel 2 and * 1/2
2573[info] - should cancel 2 * 1/2
2574[info] - should cancel ∧2 and sqrt
2575[info] - should cancel addition and subtraction of 3
2576[info] - should cancel addition and subtraction of e
2577[info] - should work for multi-levels 1
2578[info] - should work for multi-levels 2
2579[info] matchSimpler 2
2580[info] - should simplify (1+2)*(2+1)
2581[info] - should properly simplify 1 * (root3 / root3 * 3)
2582[info] - should simplify e * 2 / 2
2583[info] - should simplify root3 * 2 / 2
2584[info] - should simplify root4 * 2 / 2
2585[info] - should distribute
2586[info] - should distributeProductSum a
2587[info] - should distributeProductSum b
2588[info] - should distributeProductPower on root(3) * root(3)
2589[info] simplifyAggregate
2590[info] - should simplifyAggregate
2591[info] simplify
2592[info] - should cancel addition and subtraction (a)
2593[info] - should use multiply instead of addition
2594[info] - should work for Negate
2595[info] - should work for Negate Negate
2596[info] - should work for Reciprocal
2597[info] - should work for Reciprocal Reciprocal
2598[info] - should work for Negate Zero
2599[info] - should work for Negate MinusOne
2600[info] - should work for Reciprocal Zero
2601[info] - should work for Reciprocal One
2602[info] - should work for Reciprocal Two
2603[info] - should work for Exp Infinity
2604[info] - should work for Exp neg Infinity
2605[info] - should work for Exp Zero
2606[info] - should work for Exp One
2607[info] - should work for Ln Zero
2608[info] - should work for Ln One
2609[info] - should work for Ln e
2610[info] - should work for Sine 0
2611[info] - should work for Sine pi/2
2612[info] - should work for Sine pi
2613[info] - should work for Cosine 0
2614[info] - should work for Cosine pi/2
2615[info] - should work for Cosine pi
2616[info] complementaryTermsEliminatorAggregate
2617[info] - should eliminate * 2 / 2 in Aggregate
2618[info] - should eliminate 2 + -2 in Aggregate
2619[info] - should eliminate √3 and -√3 in Aggregate
2620[info] - should eliminate square root ∧ 2 in Aggregate
2621[info] simplifyAtomic
2622[info] - should leave atomic expression as is
2623[info] - should simplify literal expression one
2624[info] - should simplify literal expression pi
2625[info] factorsMatch
2626[info] - should match expression Sum
2627[info] - should match expression Product
2628[info] - should match expression Power
2629[info] simplify aggregate, etc.
2630[info] - should aggregate 1
2631[info] - should aggregate 2
2632[info] - should simplify aggregate 1
2633[info] - should simplify aggregate 1a
2634[info] - should simplify aggregate 2a
2635[info] - should simplify aggregate 2b
2636[info] - should simplify binary expression 3
2637[info] - should simplify aggregate 3a
2638[info] - should simplify aggregate 4a
2639[info] - should simplify aggregate 4b
2640[info] simplifyAndEvaluate (a)
2641[info] - should show ∧2 and sqrt for illustrative purposes (a)
2642[info] - should evaluate E * 2
2643[info] simplifyTerms
2644[info] - should work for BiFunction 1
2645[info] - should work for BiFunction 2
2646[info] - should work for UniFunction
2647[info] - should work for Aggregate total
2648[info] - should work for Aggregate product 1
2649[info] - should work for Aggregate product 2
2650[info] biFunctionAggregator
2651[info] - should work for 7 + 2 - 3
2652[info] - should work for 7 * 2 * -3
2653[info] biFunctionSimplifier
2654[info] - should work for square of square root
2655[info] - should work for products
2656[info] - should work for sums
2657[info] - should gather powers of 2 and * 1/2
2658[info] matchComplementary
2659[info] - should cancel plus and minus
2660[info] matchDyadicTrivial
2661[info] - should handle Sum
2662[info] - should handle Product
2663[info] - should handle Power
2664[info] - should cancel multiplication and division
2665[info] - should cancel value and reciprocal 1
2666[info] - should cancel value and reciprocal 2
2667[info] matchComplementaryExpressions
2668[info] - should work for plus and minus
2669[info] - should work for reciprocals
2670[info] matchSimplifyDyadicTermsTwoLevels
2671[info] - should match 1
2672[info] - should match 2
2673[info] biFunctionSimplifier
2674[info] - should simplify
2675[info] - should simplify √3 * -1 as -√3
2676[info] - should simplify √3 * 1 as √3
2677[info] - should simplify (√3 + 1)(√3 - 1) as 2 exactly
2678[info] - should evaluate (√3 + 1)(√3 + -1) as 2 exactly
2679[info] - should biFunctionSimplifier on (1 + -3)
2680[info] - should biFunctionSimplifier on (1 + √3)(1 - √3)
2681[info] - should simplify 1 + 2 - 2
2682[info] - should properly simplify 1 + 2 - 2 + 0
2683[info] - should simplify expressions involving square root 3
2684[info] various
2685[info] - should distributeProductSum c
2686[info] - should properly simplify 1 + root3 - root3 + 0
2687[info] - should properly simplify (1 + root3) + (zero - root3)
2688[info] - should properly simplify (1 * root3) * (3 / root3)
2689[info] - should simplify 2 root(3) all squared
2690[info] value with logging
2691[info] - should work with value on Literal
2692[info] - should work with value on One
2693[info] - should work with value on Number.one
2694[info] - should work with value on FuzzyNumber
2695[info] - should fail on non-value
2696[info] biFunctionTransformer (2)
2697[info] - should simplify 1 + 1
2698[info] - should simplify pi + pi
2699[info] - should simplify 1 + 0
2700[info] - should fail to simplify 1 + pi
2701[info] - should simplify 1 + -1
2702[info] - should simplify 1 * 1
2703[info] - should simplify pi * pi
2704[info] - should simplify 1 * 0
2705[info] - should simplify 1 * -1
2706[info] - should simplify 2 ∧ -1
2707[info] - should fail to simplify 2 ∧ 1/2
2708[info] evaluateMonadicDuple
2709[info] - should simplify E
2710[info] - should simplify ln(E)
2711[info] - should simplify ln(1)
2712[info] - should simplify ln(-1)
2713[info] matchSimplifyBiFunction
2714[info] - should simplify multiple similar ops
2715[info] two levels
2716[info] - should get 0 from -√3 + √3
2717[info] - should get 0 from √3 + -√3
2718[info] - should get 1 from 1/√3 * √3
2719[info] - should simplify -1 * √3 as negate(√3)
2720[info] - should simplify √3 * -1 as negate(√3)
2721[info] - should simplify various
2722[info] - should simplify root3 * 2 / 2
2723[info] matchAndCollectTwoDyadicLevels
2724[info] - should work for √3 * √3
2725[info] - should work for √3 + -√3
2726[info] - should work for (π + 1) * (π - 1)
2727[info] CatsKernelLawSpec:
2728[info] - Fuzziness[Double].eq.antisymmetry eq
2729[info] - Fuzziness[Double].eq.reflexivity eq
2730[info] - Fuzziness[Double].eq.symmetry eq
2731[info] - Fuzziness[Double].eq.transitivity eq
2732[info] - Fuzziness[Double].partialOrder.antisymmetry
2733[info] - Fuzziness[Double].partialOrder.antisymmetry eq
2734[info] - Fuzziness[Double].partialOrder.gt
2735[info] - Fuzziness[Double].partialOrder.gteqv
2736[info] - Fuzziness[Double].partialOrder.lt
2737[info] - Fuzziness[Double].partialOrder.partialCompare
2738[info] - Fuzziness[Double].partialOrder.pmax
2739[info] - Fuzziness[Double].partialOrder.pmin
2740[info] - Fuzziness[Double].partialOrder.reflexivity eq
2741[info] - Fuzziness[Double].partialOrder.reflexivity gt
2742[info] - Fuzziness[Double].partialOrder.reflexivity lt
2743[info] - Fuzziness[Double].partialOrder.symmetry eq
2744[info] - Fuzziness[Double].partialOrder.transitivity
2745[info] - Fuzziness[Double].partialOrder.transitivity eq
2746[info] - Rational.order.antisymmetry
2747[info] - Rational.order.antisymmetry eq
2748[info] - Rational.order.compare
2749[info] - Rational.order.gt
2750[info] - Rational.order.gteqv
2751[info] - Rational.order.lt
2752[info] - Rational.order.max
2753[info] - Rational.order.min
2754[info] - Rational.order.partialCompare
2755[info] - Rational.order.pmax
2756[info] - Rational.order.pmin
2757[info] - Rational.order.reflexivity eq
2758[info] - Rational.order.reflexivity gt
2759[info] - Rational.order.reflexivity lt
2760[info] - Rational.order.symmetry eq
2761[info] - Rational.order.totality
2762[info] - Rational.order.transitivity
2763[info] - Rational.order.transitivity eq
2764[info] - ExactNumber.order.antisymmetry
2765[info] - ExactNumber.order.antisymmetry eq
2766[info] - ExactNumber.order.compare
2767[info] - ExactNumber.order.gt
2768[info] - ExactNumber.order.gteqv
2769[info] - ExactNumber.order.lt
2770[info] - ExactNumber.order.max
2771[info] - ExactNumber.order.min
2772[info] - ExactNumber.order.partialCompare
2773[info] - ExactNumber.order.pmax
2774[info] - ExactNumber.order.pmin
2775[info] - ExactNumber.order.reflexivity eq
2776[info] - ExactNumber.order.reflexivity gt
2777[info] - ExactNumber.order.reflexivity lt
2778[info] - ExactNumber.order.symmetry eq
2779[info] - ExactNumber.order.totality
2780[info] - ExactNumber.order.transitivity
2781[info] - ExactNumber.order.transitivity eq
2782[info] RandomLongSpec:
2783[info] RandomLong
2784[info] - should get
2785[info] - should map
2786[info] RationalSpec:
2787[info] new Rational(BigInt,Long)
2788[info] - should work for 0, 1
2789[info] - should yield infinity for 1, 0
2790[info] - should yield NaN for 0, 0
2791[info] - should fail for 2, 2
2792[info] - should succeed for 0, -1
2793[info] - should fail for 1, -1
2794[info] apply(BigInt,Long)
2795[info] - should work for 0, 1
2796[info] - should succeed for 2, 2
2797[info] - should succeed for -1, -1
2798[info] - should work for 355, 113
2799[info] - should work for 355*2, 113*2
2800[info] - should work for -355, -113
2801[info] - should work for -355 (2)
2802[info] apply(Long,Long)
2803[info] - should work for 0, 1
2804[info] apply(Long,Int)
2805[info] - should work for 0, 1
2806[info] apply(Int,Int)
2807[info] - should work for 0, 1
2808[info] - should work for 0, 0
2809[info] - should work for 1, 0
2810[info] - should work for -1, 0
2811[info] - should work for -1, -2
2812[info] - should work for -2624712818L, -1
2813[info] - should fail to convert to BigInt
2814[info] apply(Long)
2815[info] - should work for Rational.bigZero
2816[info] apply(Int)
2817[info] - should work for 0
2818[info] apply(Double)
2819[info] - should convert zero
2820[info] - should convert negative zero
2821[info] - should convert Avagadro's number
2822[info] - should convert a very small number
2823[info] - should be zero for very very small number
2824[info] - should be zero for very very very small number
2825[info] - should convert 3.1416 correctly
2826[info] - should convert 3.1416 the same as "3.1416"
2827[info] - should pick up a float
2828[info] apply(BigDecimal)
2829[info] - should convert 0.5 to Rational
2830[info] - should convert to Rational
2831[info] isWhole
2832[info] - should be true for integers
2833[info] - should be false for reciprocals
2834[info] isDecimal
2835[info] - should be true for 3.14
2836[info] - should be true for 223606797749979/200000000000000
2837[info] toBigInt
2838[info] - should work for Long.MaxValue
2839[info] toLong
2840[info] - should work for Long.MaxValue
2841[info] toBigDecimal
2842[info] - should work for pi
2843[info] equals
2844[info] - should equate 0 and zero
2845[info] - should be whole
2846[info] - should equal 0
2847[info] - should equal infinity when inverted
2848[info] - should equal BigDecimal.ZERO
2849[info] - should equal r when added to r
2850[info] - should equal infinity when r-interpolator has 0 denominator
2851[info] - should equal infinities
2852[info] +
2853[info] - should return 4 for 2+2
2854[info] - should return result for 0+-236274181
2855[info] - should add 0 to large number
2856[info] - should add 0 to large number (2)
2857[info] - should add 1 to large number
2858[info] - should add large number to smaller one
2859[info] *
2860[info] - should return 4 for 2*2
2861[info] - should return result for 0 * -236274181
2862[info] - should multiply 2 by large number
2863[info] - should multiply large number by smaller one
2864[info] - should multiply large number by short
2865[info] division
2866[info] - should work for 6 / 10 / 3
2867[info] -
2868[info] - should work for -1
2869[info] negate
2870[info] - should work for -1
2871[info] implicit conversion
2872[info] - should work for 0
2873[info] 1/2
2874[info] - should be OK
2875[info] - should equal half
2876[info] - should be half of one
2877[info] - should be OK using r-interpolator
2878[info] - should be OK using r-interpolator with variable
2879[info] 1
2880[info] - should be OK
2881[info] - should be one
2882[info] - should be positive
2883[info] - should be whole
2884[info] - should be unity
2885[info] - should equal 1
2886[info] - should not equal infinity when inverted
2887[info] - should equal itself when inverted
2888[info] - should equal BigDecimal.one
2889[info] - should equal r when multiplied by r
2890[info] - should be -1 when negated
2891[info] power
2892[info] - should work for Int power
2893[info] - should work for Rational power (1)
2894[info] - should work for Rational power (2)
2895[info] - should work for Rational power (3)
2896[info] - should work for Rational ∧ (4)
2897[info] - should get the correct precedence for ∧
2898[info] - should work for Rational power (5)
2899[info] - should fail for non-exact powers
2900[info] - should apply
2901[info] power
2902[info] - should power 1
2903[info] - should power 2
2904[info] - should power 3
2905[info] - should power 4
2906[info] - should fail with bad power
2907[info] root
2908[info] - should root 0
2909[info] - should root 1
2910[info] - should root 2
2911[info] - should root -2
2912[info] exponent
2913[info] - should work for 2
2914[info] - should work for Avagadro
2915[info] 10
2916[info] - should be OK
2917[info] - should be ten
2918[info] - should be whole
2919[info] - should not be zero
2920[info] - should equal 10
2921[info] - should equal 5*2
2922[info] - should equal 10*1
2923[info] - should equal BigDecimal(10)
2924[info] - should equal a million (ten raised to 6th power)
2925[info] 2/3
2926[info] - should be OK
2927[info] - should equal -1/3 when added to -1
2928[info] - should be less than 1
2929[info] - should not be whole
2930[info] - should equal 2 when multiplied by 3
2931[info] - should equal 3/2 when inverted
2932[info] - should equal 5/3 when added to 1
2933[info] - should equal 4/9 when multiplied by itself
2934[info] - should equal 4/9 when squared using ∧
2935[info] - should barf when toInt invoked
2936[info] - should barf when Rational.toInt invoked
2937[info] 2/4
2938[info] - should not be OK
2939[info] - should not OK via apply
2940[info] Floating Point Problem
2941[info] - should be OK
2942[info] toString
2943[info] - should be decimal when exact
2944[info] - should be recurring when exact: 2/3
2945[info] - should be decimal when not exact: pi
2946[info] - should work for NaN
2947[info] - should work for Infinity
2948[info] - should work for negative Infinity
2949[info] - should work for gamma
2950[info] - should work for various prime denominators
2951[info] render
2952[info] - should be decimal when exact
2953[info] - should be recurring when exact: 5/3
2954[info] - should be decimal when not exact: pi
2955[info] - should work for NaN
2956[info] - should work for Infinity
2957[info] - should work for negative Infinity
2958[info] - should work for gamma
2959[info] - should work for various prime denominators
2960[info] - should work for various composite denominators
2961[info] findRepeatingSequence
2962[info] - should fail for 4/5
2963[info] - should work when denominator is prime
2964[info] - should work when numerator and denominator are prime 1
2965[info] - should work when numerator and denominator are prime 2
2966[info] - should work when denominator is composite 1
2967[info] - should work when denominator is composite 2
2968[info] - should fail when denominator has too many prime factors
2969[info] renderApproximate
2970[info] - should work with one parameter (1)
2971[info] - should fail with one parameter
2972[info] - should work with two parameters (1)
2973[info] - should fail with two parameters
2974[info] renderAsPercent
2975[info] - should work
2976[info] Rational(String)
2977[info] - should work for 0.1
2978[info] - should work for 1.0e6
2979[info] - should convert Avagadro's number
2980[info] parse(String)
2981[info] - should work for 0.1
2982[info] - should work for 1.
2983[info] - should work for 1.0e6
2984[info] - should work for 15699511928844194920/4294967295
2985[info] - should work for 15699511928844194920
2986[info] - should work for -15699511928844194920/4294967295
2987[info] - should work for -15699511928844194920/-4294967295
2988[info] - should fail for x
2989[info] edu/neu/coe/csye7200/sorting
2990[info] - should work
2991[info] r-interpolator
2992[info] - should work for -1/0
2993[info] - should work for 1/-2147483648
2994[info] - should work for -1/-2147483648
2995[info] toInt
2996[info] - should work for Int.MaxValue
2997[info] - should work for Int.MinValue
2998[info] - should fail for Int.MaxValue+1
2999[info] - should fail for Int.MinValue-1
3000[info] narrow(BigInt)
3001[info] - should work for Int.MaxValue
3002[info] - should not work for Int.MaxValue+1
3003[info] narrow(Rational)
3004[info] - should work for Int.MaxValue
3005[info] - should work for Int.MaxValue+1
3006[info] normalize
3007[info] - should work for 0,0
3008[info] - should work for 1,0
3009[info] - should work for 1,1
3010[info] - should work for 2,2
3011[info] - should work for 3,5
3012[info] compare
3013[info] - should work for 0,0
3014[info] - should work for 0,1
3015[info] - should work for 1,0
3016[info] - should work for 1,1
3017[info] - should work for inf,inf
3018[info] - should work for -inf,inf
3019[info] mediant
3020[info] - should work
3021[info] approximate
3022[info] - should work
3023[info] - should fail
3024[info] approximateAny
3025[info] - should work for specific epsilon
3026[info] convertDouble
3027[info] - should work
3028[info] sqrt
3029[info] - should work correctly
3030[info] rootOfBigInt
3031[info] - should work for sqrt(4)
3032[info] RationalOps
3033[info] - should work correctly for 2 + 3
3034[info] - should work correctly for 2 + Rational(3)
3035[info] - should work correctly for 2 * 3
3036[info] - should work correctly for 2 * Rational(3)
3037[info] - should work correctly for 2:/3
3038[info] - should work correctly (but somewhat counter-intuitively) for 2/3
3039[info] negZero
3040[info] - should add to zero correctly
3041[info] - should add to one correctly
3042[info] - should multiply correctly
3043[info] - should convert to double correctly
3044[info] Rat...
3045[info] - should parse a String
3046[info] - should convert from an Int
3047[info] - should convert to an Int
3048[info] - should convert to a Long
3049[info] - should convert to a Float
3050[info] - should convert infinity to a Double
3051[info] renderExact
3052[info] - should render -1/6
3053[info] - should render 1/2
3054[info] - should render thirds
3055[info] - should render quarters
3056[info] - should render fifths
3057[info] - should render sixths
3058[info] - should render eighths
3059[info] - should render tenths
3060[info] - should render other
3061[info] apply(String)
3062[info] - should handle the vulgar fractions
3063[info] ComplexSpec:
3064[info] Complex
3065[info] - should real
3066[info] - should imag
3067[info] - should isInfinite
3068[info] - should asNumber
3069[info] - should add1
3070[info] - should add2
3071[info] - should multiply
3072[info] - should unary_-
3073[info] - should divide
3074[info] - should - Constants
3075[info] - should - Number
3076[info] - should - ComplexPolar
3077[info] - should - ComplexCartesian
3078[info] power
3079[info] - should c1_2∧1
3080[info] - should c1_2∧2
3081[info] - should c1_2∧0
3082[info] - should c1_2∧-1
3083[info] - should c1_2∧1/2
3084[info] - should c2_0∧1/2
3085[info] - should p1_pi_2∧1
3086[info] - should p1_pi_2∧2
3087[info] - should p1_pi_2∧0
3088[info] - should p1_pi_2∧-1
3089[info] - should p1_1∧-1/2
3090[info] - should c2_0∧1/3
3091[info] - should e^i𝛑
3092[info] other
3093[info] - should modulus
3094[info] - should argument
3095[info] - should conjugate (1)
3096[info] - should conjugate (2)
3097[info] - should invert
3098[info] - should numberProduct
3099[info] - should convertToPolar
3100[info] - should convertToPolar 2
3101[info] - should convertToPolar 3
3102[info] - should convertToPolar 4
3103[info] - should check that math.atan really works 1
3104[info] - should check that math.atan really works 2
3105[info] - should check that math.atan really works 3
3106[info] - should check that math.atan really works for many fractions
3107[info] - should convertToCartesian
3108[info] render
3109[info] - should work for various Complex values
3110[info] - should work for negative polar angle
3111[info] - should work for iPi
3112[info] - should work for zero
3113[info] - should work for root 2 in c2_0∧1/2
3114[info] - should render c2_0∧1/3
3115[info] - should render root2s
3116[info] Number.asComplex
3117[info] - should work
3118[info] numberProduct
3119[info] - should work
3120[info] - should work when i is scaled by two (prefix)
3121[info] - should work when i is scaled by two (postfix)
3122[info] i
3123[info] - should render as √-1
3124[info] - should render as √-4
3125[info] - should convertToNumber
3126[info] - should scale(PureNumber)
3127[info] - should normalize i as itself
3128[info] - should normalize 11i
3129[info] C interpolator
3130[info] - should parse
3131[info] NumberParserSpec:
3132[info] percentage
3133[info] - should parse 10%
3134[info] - should parse 10.35%
3135[info] - should parse 10.352%
3136[info] degree
3137[info] - should parse 180°
3138[info] - should parse -180°
3139[info] - should parse 0°
3140[info] numberWithFuzziness
3141[info] - should parse 1.0*
3142[info] - should reject 1.0 *
3143[info] - should parse 1.*
3144[info] - should reject 1.*
3145[info] - should parse 3.1415927*
3146[info] - should parse 3.1415927...
3147[info] - should parse 3.1415927*E1
3148[info] - should reject 3.1415927* E1
3149[info] - should parse 1.00(5)
3150[info] - should reject 1.00 (5)
3151[info] generalNumber
3152[info] - should parse 1.0
3153[info] - should parse 1.*
3154[info] - should work for 3.14
3155[info] - should work for 3.1415927
3156[info] - should parse 3.1415927*
3157[info] - should parse 2.9979245800E8
3158[info] - should parse 3.1415927*E1
3159[info] - should parse 1/2
3160[info] - should work for 1.00(5)
3161[info] fuzz
3162[info] - should parse (17)
3163[info] - should parse *
3164[info] number
3165[info] - should parse 1.*
3166[info] - should work for 3.14
3167[info] - should work for 3.1415927
3168[info] - should parse 3.1415927*
3169[info] - should parse 3.1415927*E1
3170[info] - should parse 3.141592653589793*
3171[info] - should parse 𝛑
3172[info] - should parse 1𝛑
3173[info] - should reject 1 𝛑
3174[info] realNumber
3175[info] - should parse 2.9979245800E8
3176[info] ValueSpec:
3177[info] Value
3178[info] - should signum
3179[info] - should isZero
3180[info] - should isEqual
3181[info] - should maybeDouble
3182[info] - should valueToString 1
3183[info] - should valueToString 2
3184[info] - should valueToString 3
3185[info] - should maybeInt
3186[info] - should maybeNominalRational
3187[info] - should add
3188[info] - should abs
3189[info] - should scaleDouble
3190[info] ExpressionSpec:
3191[info] Expression
3192[info] - should parseToMillExpression
3193[info] ShuntingYardParser
3194[info] - should parseInfix 1
3195[info] - should parseInfix 1 + 2
3196[info] - should parseInfix ( 1 + 2 ) * 3
3197[info] - should parseInfix ( ( ( 4 + 5 ) * ( 2 + 3 ) + 6 ) / ( 8 + 7 ) ) ∧ 9
3198[info] - should parseInfix ( ( ( ( 4 + ( 4 × ( 2 / ( 1 − 5 ) ) ) ) ∧ 2 ) ∧ 3 )
3199[info] - should parseInfix 3 + 4 × 2 / ( 1 − 5 ) ∧ 2 ∧ 3
3200[info] - should parseInfix ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )
3201[info] - should parse Infix and evaluate: 9
3202[info] - should parse Infix and evaluate: 0.5
3203[info] - should parse Infix and evaluate: sqrt(3)
3204[info] - should shuntingYard
3205[info] - should shuntingYard w/o spaces
3206[info] - should operator
3207[info] ComplexAlgebraicInstancesLawSpec:
3208[info] OperationsSpec:
3209[info] MonadicOperationModulate
3210[info] - should work
3211[info] - should work with circular true
3212[info] - should work with circular false
3213[info] FibonacciSpec:
3214[info] Fibonacci
3215[info] - should psi
3216[info] - should phi
3217[info] - should render phi+1 as a Field
3218[info] - should render phi+1 as an Expression
3219[info] - should fib0
3220[info] - should fib1
3221[info] - should fib2
3222[info] - should psiFuzzy
3223[info] - should fibFuzzy
3224[info] - should fib
3225[info] AggregateSpec:
3226[info] Aggregate
3227[info] - should render
3228[info] - should depth
3229[info] - should evaluate 1
3230[info] - should evaluate 2
3231[info] - should evaluate 3
3232[info] - should simplifyComponents {2 * -1}+{2 + 1}+{-1 * 5}+2
3233[info] - should simplify {2 * -1}+{2 + 1}+{-1 * 5}+2
3234[info] QuadraticSpec:
3235[info] Quadratic
3236[info] - should normalize
3237[info] - should branches
3238[info] - should isExact
3239[info] - should value 1
3240[info] - should value 2
3241[info] - should value root 2
3242[info] - should render
3243[info] - should approximation
3244[info] - should signum
3245[info] - should abs
3246[info] - should scale
3247[info] - should negate
3248[info] - should product
3249[info] - should solutionSquared
3250[info] - should invert
3251[info] - should scale phi and psi with negative number
3252[info] - should add phi
3253[info] - should add phi and psi
3254[info] - should add 1
3255[info] - should add -1
3256[info] - should add 2
3257[info] - should multiply
3258[info] - should zero
3259[info] - should one
3260[info] - should power 0
3261[info] - should power 1
3262[info] - should power 2
3263[info] - should power 3
3264[info] - should power 4
3265[info] - should transform
3266[info] - should apply(Solution) to get phi
3267[info] - should apply(ExactNumber,ExactNumber) to get phi
3268[info] ApproximationSpec:
3269[info] Approximation
3270[info] - should solve Newton's original problem
3271[info] - should solve cosine problem
3272[info] - should solve cosine problem using Halley's method
3273[info] - should solve Newton's original problem using Halley's method
3274[info] - should solve Wikipedia example using Halley's method
3275[info] - should solve the inverse square root problem for 0.15625
3276[info] - should evaluate newtonsPolynomial
3277[info] - should evaluate newtonsDerivative
3278[info] - should evaluate newtonsSecondDerivative
3279[info] - should evaluate newtons method
3280[info] - should converged
3281[info] - should iterate
3282[info] - should delta
3283[info] - should do correction for Newton's polynomial
3284[info] - should do correction for cosine problem
3285[info] InfiniteSeriesSpec:
3286[info] InfiniteSeries
3287[info] - should terms
3288[info] - should convergenceRate
3289[info] - should nTerms
3290[info] - should evaluateToTolerance 0.001
3291[info] - should evaluateToTolerance 0.00001
3292[info] - should evaluateToTolerance 0.000001
3293[info] CatsKernelSpec:
3294[info] Cats instances for Rational
3295[info] - should provide Eq/Order/Show for Rational
3296[info] - should sort Rational via Cats Order (bridged to scala Ordering)
3297[info] Cats instances for ExactNumber
3298[info] - should provide Eq/Order/Show for ExactNumber
3299[info] Cats instances for Number
3300[info] - should provide PartialOrder/Eq/Show for Number
3301[info] - should Eq[Number] structural: Fuzzy same triple are equal !!! IGNORED !!!
3302[info] - should Eq[Number] structural: different fuzz not equal !!! IGNORED !!!
3303[info] - should Eq[Number] structural: different factor not equal !!! IGNORED !!!
3304[info] - should Eq[Number]/PartialOrder[Number] respect Gaussian fuzz !!! IGNORED !!!
3305[info] - should Eq[Number] structural: reflexive for Fuzzy !!! IGNORED !!!
3306[info] - should Eq[Number] structural: NaN equals NaN
3307[info] Cats instances for Field
3308[info] - should provide PartialOrder/Eq/Show for Field
3309[info] Cats instances for Algebraic
3310[info] - should provide PartialOrder/Eq/Show for Algebraic !!! IGNORED !!!
3311[info] Cats instances for Expression
3312[info] - should provide PartialOrder/Eq/Show for Expression
3313Some(-1)
33140
33151
3316
3317simplified = Solution: -0.5 + + √1.25
33183
331922/7
3320333/106
3321355/113
3322103993/33102
3323104348/33215
3324208341/66317
3325312689/99532
3326833719/265381
33271146408/364913
3328ratio = 104348/33215
3329ratio = 104348/33215
3330[info] + Rational.FromString: OK, passed 100 tests.
3331Some(9.980029960049940069920089900109880E-7...)
3332[info] ErrorCommutativeMonoidLawSpec:
3333[info] - AbsSigma.commutativeMonoid.associative
3334[info] - AbsSigma.commutativeMonoid.collect0
3335[info] - AbsSigma.commutativeMonoid.combine all
3336[info] - AbsSigma.commutativeMonoid.combineAllOption
3337[info] - AbsSigma.commutativeMonoid.commutative
3338[info] - AbsSigma.commutativeMonoid.intercalateCombineAllOption
3339[info] - AbsSigma.commutativeMonoid.intercalateIntercalates
3340[info] - AbsSigma.commutativeMonoid.intercalateRepeat1
3341[info] - AbsSigma.commutativeMonoid.intercalateRepeat2
3342[info] - AbsSigma.commutativeMonoid.is id
3343[info] - AbsSigma.commutativeMonoid.left identity
3344[info] - AbsSigma.commutativeMonoid.repeat0
3345[info] - AbsSigma.commutativeMonoid.repeat1
3346[info] - AbsSigma.commutativeMonoid.repeat2
3347[info] - AbsSigma.commutativeMonoid.reverseCombineAllOption
3348[info] - AbsSigma.commutativeMonoid.reverseRepeat1
3349[info] - AbsSigma.commutativeMonoid.reverseRepeat2
3350[info] - AbsSigma.commutativeMonoid.reverseReverses
3351[info] - AbsSigma.commutativeMonoid.right identity
3352[info] GoldbachSpec:
3353[info] Goldbach
3354[info] - should goldbach success
3355[info] - should goldbach fail
3356[info] TranscendentalSpec:
3357[info] Transcendental
3358[info] - should evaluate pi
3359[info] - should evaluate e
3360[info] - should evaluate l2
3361[info] - should evaluate lg2e
3362[info] - should evaluate gamma
3363[info] - should expression pi
3364[info] - should expression e
3365[info] - should expression l2
3366[info] - should simplify pi
3367[info] - should simplify e
3368[info] - should simplify l2
3369[info] - should function 1
3370[info] - should function 2
3371[info] - should render
3372[info] InfiniteProductSpec:
3373[info] Leibniz
3374[info] - should asLazyList
3375[info] - should apply
3376[info] - should toDouble
3377[info] Euler
3378[info] - should asLazyList
3379[info] - should apply
3380[info] - should toDouble
3381[info] FuzzSpec:
3382[info] Gaussian
3383[info] - should sum with self
3384[info] - should not multiply with self
3385[info] Bounded
3386[info] - should sum with self
3387[info] - should multiply with self
3388[info] - should implement negate
3389[info] - should implement inverse
3390[info] - should implement power(Int)
3391[info] - should implement power(Double)
3392[info] - should implement power(Fuzzy)
3393[info] fuzzy(String)
3394[info] - should parse 1
3395[info] - should parse 6.67408(31)E−11
3396[info] - should parse 3.1415927(01)
3397[info] - should parse 3.1415927
3398[info] ComplexAlgebraicInstancesSpec:
3399[info] complexCommutativeRing (zero/one/fromInt/plus/times/negate)
3400[info] - should provide zero/one/fromInt/plus/times/negate
3401[info] ExactNumberSpec:
3402[info] ExactNumber
3403[info] - should isProbablyZero
3404[info] - should isSame
3405[info] - should signum
3406[info] - should compare
3407[info] - should isZero
3408[info] - should isExact
3409[info] - should doAdd
3410[info] - should scale
3411[info] - should doPower
3412[info] - should factor
3413[info] - should render
3414[info] - should make
3415[info] - should doMultiply
3416[info] - should simplify
3417[info] - should nominalValue
3418[info] - should apply
3419[info] - should succeed with log
3420[info] - should fail with log
3421[info] NewtonSpec:
3422[info] Newton
3423[info] - should solve x = cos(x)
3424[info] - should solve x * x = 2
3425[info] Newton Worksheet
3426[info] - should worksheet
3427[info] BenchmarkSpec:
3428[info] Benchmark
3429[info] - should do 100rRepetitions !!! IGNORED !!!
3430[info] RationalAlgebraicInstancesSpec:
3431[info] rationalTruncatedDivisionCRing (tquot/tmod/tquotmod + order)
3432[info] - should truncate quotient toward zero and compute remainder
3433[info] - should expose an order consistent with Rational.RationalIsOrdering
3434[info] VarianceSpec:
3435[info] sumOfSquares
3436[info] - should work (pair)
3437[info] - should work for first (5) integers
3438[info] - should sum (n) squares according to formula
3439[info] rootSumSquares
3440[info] - should work (pair)
3441[info] - should work for first (5) integers
3442[info] - should sum (n) squares according to formula
3443[info] rootMeanSquare
3444[info] - should work (pair)
3445[info] - should work for first (5) integers
3446[info] - should sum (n) squares according to formula
3447[info] SolutionSpec:
3448[info] Solution
3449[info] - should isPureNumber
3450[info] - should base
3451[info] - should scale
3452[info] - should branch
3453[info] - should factor
3454[info] - should isZero
3455[info] - should maybeFactor
3456[info] - should isExact
3457[info] - should signum
3458[info] - should add
3459[info] - should offset
3460[info] - should isUnity
3461[info] - should asNumber
3462[info] - should asField
3463[info] RationalParserSpec:
3464[info] simpleNumber
3465[info] - should parse 1
3466[info] - should reject 1
3467[info] rational
3468[info] - should parse 1/2
3469[info] realNumber
3470[info] - should parse 3.1415927
3471[info] - should parse 3.1415927E1
3472[info] number
3473[info] - should parse 1/2
3474[info] - should parse 1
3475[info] - should parse 3.1415927
3476[info] RootSpec:
3477[info] Root
3478[info] - should evaluateAsIs
3479[info] - should solution
3480[info] - should isExact
3481[info] - should maybeFactor
3482[info] - should render
3483[info] - should approximation
3484[info] - should maybeValue
3485[info] - should simplify
3486[info] - should isAtomic
3487[info] - should simplifyAtomic
3488[info] - should evaluate(PureNumber)
3489[info] - should evaluate(NthRoot)
3490[info] Root expressions
3491[info] - should evaluate 1 / √5
3492[info] - should evaluate phi∧2
3493[info] - should evaluate squareRoot(phi)
3494[info] - should evaluate phi + psi
3495[info] - should evaluate 2
3496[info] RationalAlgebraicInstancesLawSpec:
3497[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.associativity
3498[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.can serialize and deserialize
3499[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.combineAll
3500[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.combineAll(Nil) == id
3501[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.combineAllOption
3502[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.combineN(a, 0) == id
3503[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.combineN(a, 1) == a
3504[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.combineN(a, 2) == a |+| a
3505[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.commutative
3506[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.consistent remove
3507[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.isEmpty
3508[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.left inverse
3509[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.leftIdentity
3510[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.right inverse
3511[info] - Rational.commutative ring.additive:additive commutative group.base:commutative group.rightIdentity
3512[info] - Rational.commutative ring.additive:additive commutative group.can serialize and deserialize
3513[info] - Rational.commutative ring.additive:additive commutative group.consistent subtract
3514[info] - Rational.commutative ring.additive:additive commutative group.sum(Nil) == zero
3515[info] - Rational.commutative ring.additive:additive commutative group.sumN(a, 0) == zero
3516[info] - Rational.commutative ring.additive:additive commutative group.sumN(a, 1) == a
3517[info] - Rational.commutative ring.additive:additive commutative group.sumN(a, 2) == a + a
3518[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.associativity
3519[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.can serialize and deserialize
3520[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.combineAll
3521[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.combineAll(Nil) == id
3522[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.combineAllOption
3523[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.combineN(a, 0) == id
3524[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.combineN(a, 1) == a
3525[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.combineN(a, 2) == a |+| a
3526[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.commutative
3527[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.isEmpty
3528[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.leftIdentity
3529[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.base:commutative monoid.rightIdentity
3530[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.can serialize and deserialize
3531[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.pow(a, 0) == one
3532[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.pow(a, 1) == a
3533[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.pow(a, 2) == a * a
3534[info] - Rational.commutative ring.multiplicative:multiplicative commutative monoid.product(Nil) == one
3535[info] - Rational.commutative ring.distributive
3536[info] - Rational.commutative ring.fromBigInt
3537[info] - Rational.commutative ring.fromInt
3538[info] ExpressionSpec:
3539[info] evaluate
3540[info] - should evaluate 1 + -1
3541[info] - should evaluate 1 * -1
3542[info] - should evaluate i * 2
3543[info] parse
3544[info] - should parse 1
3545[info] - should parse and evaluate sqrt(3)
3546[info] - should parse and evaluate half
3547[info] ExpressionMonoFunction
3548[info] - should work for Negate
3549[info] - should work for Reciprocal
3550[info] - should work for Exp
3551[info] - should work for Ln
3552[info] - should work for Sine
3553[info] - should work for Cosine
3554[info] evaluateAsIs for UniFunction
3555[info] - should work for Exp(1)
3556[info] - should work for Reciprocal
3557[info] - should work for Ln(-1)
3558[info] materialize UniFunction
3559[info] - should work for Exp(1)
3560[info] - should work for Reciprocal
3561[info] - should work for Exp(Ln(2))
3562[info] Expression
3563[info] - should simplifyAndEvaluate
3564[info] - should render
3565[info] - should evaluate 3 5 + 7 2 – *
3566[info] ExpressionOps
3567[info] - should evaluate +
3568[info] - should evaluate -
3569[info] - should evaluate *
3570[info] - should evaluate /
3571[info] - should evaluate ∧ 2
3572[info] - should evaluate sqrt 36
3573[info] - should evaluate sin pi/2
3574[info] - should evaluate atan
3575[info] - should evaluate log 2
3576[info] - should evaluate log e
3577[info] - should evaluate log 10
3578[info] - should fail to evaluate log 1 x or log 0 x
3579[info] - should evaluate ln E
3580[info] - should evaluate ln 2E
3581[info] - should evaluate xxx
3582[info] - should evaluate xxx 2
3583[info] toString
3584[info] - should work for (sqrt 7)∧2
3585[info] various operations
3586[info] - should evaluate E * 2
3587[info] isExact
3588[info] - should be true for any constant Number
3589[info] - should be true for any sum of exact Numbers of the same factor (not e)
3590[info] - should be false for any product of exact Numbers and a NatLog factor (except for one)
3591[info] - should be true for product of one exact Numbers and a NatLog factor
3592[info] - should be true for product of zero exact Numbers and a NatLog factor
3593[info] depth
3594[info] - should be 1 for any atomic expression
3595[info] - should be 2 for any UniFunction expression
3596[info] - should be more than 1 for other expression
3597[info] Euler
3598[info] - should prove Euler's identity 1
3599[info] - should prove Euler's identity 2
3600[info] FieldExpression
3601[info] - should Zero be equal to zero
3602[info] - should One be equal to one
3603[info] simplifyConstant
3604[info] - should simplify biFunction expressions
3605[info] simplify
3606[info] - should simplify field expressions
3607[info] - should simplify function expressions
3608[info] - should simplify biFunction expressions
3609[info] - should simplify aggregate expressions
3610[info] - should aggregate 2
3611[info] - should evaluate e * e
3612[info] - should evaluate phi * phi
3613[info] - should evaluate 1 / phi
3614[info] - should evaluate - phi
3615[info] Sum
3616[info] - should add pi to -pi
3617[info] simplifyComposite
3618[info] - should evaluate e * e
3619[info] - should evaluate phi * phi
3620[info] LazyNumberFuzzySpec:
3621[info] fuzz1
3622[info] - should be 1
3623[info] - should be -1 after negate
3624[info] - should be 0 after minus(1)
3625[info] fuzz2
3626[info] - should be 2
3627[info] - should be 4 when multiplied by itself
3628[info] - should be 1 when divided by itself
3629[info] - should be 3 when added to one
3630[info] - should be 6 when added to one and three
3631[info] - should be 3 when added to one by explicit function
3632[info] fuzzy for comprehension
3633[info] - should give 4
3634[info] fuzzy composition
3635[info] - should work *** FAILED ***
3636[info] Exact: 2.718281828459045 was not equal to Exact: 2.7182818284590455 (LazyNumberFuzzySpec.scala:82)
3637[info] - should work with fuzzy 1 *** FAILED ***
3638[info] Bounded: 2.718281828459045, 0.001 was not equal to Bounded: 2.7182818284590455, 0.001 (LazyNumberFuzzySpec.scala:89)
3639[info] - should give 8
3640[info] PrimesSpec:
3641[info] Prime
3642[info] - should bits
3643[info] - should isProbablePrime
3644[info] - should isProbableOddPrime
3645[info] - should fermat
3646[info] - should implement Lucas for 7 and 71
3647[info] - should implement primeFactors
3648[info] - should implement primeFactorMultiplicity
3649[info] - should implement Lucas()
3650[info] - should implement testPrimitiveRoot
3651[info] - should implement primitiveRoot
3652[info] - should multiplicativeInverse
3653[info] - should validate
3654[info] - should next
3655[info] - should isCarmichaelNumber2
3656[info] - should isCarmichaelNumber3
3657[info] - should create primes from Mersenne numbers
3658[info] - should create Mersenne numbers
3659[info] - should create Mersenne prime
3660[info] - should get first 100 primes
3661[info] - should get first 1000 primes
3662[info] - should get primes < 1000
3663[info] piApprox
3664[info] - should be correct for specific values
3665[info] - should be correct for 10∧x
3666[info] MillerRabin
3667[info] - should get small primes < 1000
3668[info] - should eSieve for primes < 1000
3669[info] - should eSieve for primes < 10000
3670[info] - should test MillerRabin
3671[info] - should totient
3672[info] + Rational.FromIntAndShort: OK, passed 100 tests.
3673[info] MillParserSpec:
3674[info] MillParser
3675[info] - should parse monadicOperator
3676[info] - should parse dyadicOperator
3677[info] - should parse number
3678[info] - should parse dyadicTerm
3679[info] - should parse monadicTerm (1)
3680[info] - should parse monadicTerm (2)
3681[info] - should parse anadicTerm
3682[info] - should parse term
3683[info] - should parse mill
3684[info] - should parseMill
3685[info] - should parse: 73 24 <> -
3686[info] ContinuedFractionSpec:
3687[info] ConFrac.take
3688[info] - should create singleton simple ConFrac
3689[info] - should create doubleton simple ConFrac
3690[info] ConFrac.takeWhile
3691[info] - should phi ConFrac.simple precise to 1E-6
3692[info] - should fail to evaluate phi ConFrac precise to 1E-6
3693[info] ConFrac.convergents
3694[info] - should get convergents from simple ConFrac
3695[info] - should get convergents from simple finite expansion for pi
3696[info] - should get convergents for e
3697[info] - should get convergents for root 2
3698[info] ConFrac.coefficients
3699[info] - should work on finite simple ConFrac
3700[info] - should work on very short finite simple ConFrac
3701[info] - should work on infinite simple ConFrac
3702[info] - should work on finite general ConFrac
3703[info] ConFrac.reverseCoefficients
3704[info] - should work on finite simple ConFrac
3705[info] ConFrac.toNominalRational
3706[info] - should implement simple toNominalRational
3707[info] - should implement simple toRationalOption(Rational)
3708[info] - should implement simple finite toRationalOption(Rational)
3709[info] - should implement simple toNominalRational(Double)
3710[info] - should define implement coefficients for FourOverPiLeibniz
3711[info] ConFrac.phi
3712[info] - should toDouble
3713[info] - should implement toDouble(Double)
3714[info] ConFrac.e
3715[info] - should define ConFrac
3716[info] ConFrac.PiSimple
3717[info] - should define ConFrac
3718[info] ConFrac.root2
3719[info] - should define ConFrac
3720[info] - should solve the Strand magazine puzzle
3721[info] ConFrac.root3
3722[info] - should define ConFrac
3723[info] ConFrac.root19
3724[info] - should define ConFrac
3725[info] - should toDouble
3726[info] - should implement toDouble(Double)
3727[info] ConFrac.unapply
3728[info] - should work
3729[info] ContinuedFraction.prefix
3730[info] - should create singleton ContinuedFraction
3731[info] ContinuedFraction.takeWhile
3732[info] - should phi ContinuedFraction precise to 1E-6
3733[info] ContinuedFraction.toNominalRational
3734[info] - should implement toNominalRational
3735[info] - should implement toNominalRational(Double)
3736[info] ContinuedFraction.phi
3737[info] - should toDouble
3738[info] - should implement toDouble(Double)
3739[info] ContinuedFraction.e
3740[info] - should define ContinuedFraction
3741[info] ContinuedFraction.pi
3742[info] - should define ContinuedFraction.PiSimple
3743[info] - should get ContinuedFraction.PiSimple with precision 1 in 10^10
3744[info] - should define ContinuedFraction.PiSomayaji
3745[info] - should define ContinuedFraction.PiA
3746[info] ContinuedFraction.root2
3747[info] - should define ContinuedFraction
3748[info] ContinuedFraction.root3
3749[info] - should define ContinuedFraction
3750[info] ContinuedFraction.root19
3751[info] - should define ContinuedFraction
3752[info] - should toDouble
3753[info] - should implement toDouble(Double)
3754[info] FPSpec:
3755[info] FP
3756[info] - should identityTry
3757[info] - should tryMap
3758[info] - should toTry
3759[info] - should optionMap
3760[info] - should tryF1
3761[info] - should tryF2
3762[info] - should recover
3763[info] doMap function
3764[info] - should doMap: return Success(Z) when given Right(R)
3765[info] - should doMap: call tryMapLeft and return its result when given Left(L)
3766[info] - should resource
3767[info] - should toTryWithThrowable
3768[info] - should readFromResource
3769[info] - should optional
3770[info] - should resourceForClass
3771[info] - should sequence1
3772[info] - should sequence2
3773[info] - should sequence3
3774[info] - should sequence4
3775[info] - should sequence5
3776[info] - should fail1: return a Failure with CoreException when given a String
3777[info] - should fail2: return a Failure with the given Throwable
3778[info] - should getOrThrow
3779[info] - should transpose
3780[info] toTry
3781[info] - should toTry
3782[info] - should toTryWithThrowable
3783[info] - should toTryWithRationalException
3784[info] + Rational.Addition: OK, passed 100 tests.
3785[info] + Rational.Double: OK, passed 100 tests.
3786actual = 1.643(1)
3787expected = 1.6449340668482262±0.00000000000030%
3788expected.fuzz = Some(RelativeFuzz(3.068906722219106E-15,Gaussian))
3789wiggle = 0.0038905918864131214
3790difference = -0.001(1)
3791fuzz = AbsoluteFuzz(0.001,Gaussian)
3792[info] RealAlgebraicInstancesLawSpec:
3793[info] SeriesSpec:
3794[info] FiniteSeries
3795[info] - should term
3796[info] - should evaluateToTolerance n
3797[info] - should evaluateToTolerance epsilon
3798[info] InfiniteSeries
3799[info] - should term
3800[info] - should evaluateToTolerance n
3801[info] - should evaluateToTolerance infinity
3802[info] - should evaluateToTolerance epsilon
3803[info] Basel Problem
3804[info] - should term
3805[info] - should evaluateToTolerance n
3806[info] - should evaluateToTolerance N
3807[info] - should evaluateToTolerance epsilon
3808[info] + Rational.Division: OK, passed 100 tests.
3809Starting build for ProjectRef(file:/build/repo/,root) (number)... [3/6]
3810Compile scalacOptions: -Wconf:msg=can be rewritten automatically under:s, -source:3.8
3811[info] compiling 2 Scala sources to /build/repo/parse/target/scala-3.8.1-RC1/classes ...
3812[info] done compiling
3813[info] compiling 3 Scala sources to /build/repo/top/target/scala-3.8.1-RC1/classes ...
3814[info] done compiling
3815Starting build for ProjectRef(file:/build/repo/,parse) (number-parse)... [4/6]
3816Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wvalue-discard, -Wnonunit-statement, -explain, -Wunused:imports, -Wunused:privates, -Wunused:locals, -Wconf:msg=Couldn't resolve a member:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
3817[info] compiling 2 Scala sources to /build/repo/parse/target/scala-3.8.1-RC1/test-classes ...
3818[info] done compiling
381920:45:42,129 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.23
382020:45:42,130 |-INFO in ch.qos.logback.classic.util.ContextInitializer@17eade0a - No custom configurators were discovered as a service.
382120:45:42,130 |-INFO in ch.qos.logback.classic.util.ContextInitializer@17eade0a - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
382220:45:42,130 |-INFO in ch.qos.logback.classic.util.ContextInitializer@17eade0a - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
382320:45:42,130 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
382420:45:42,131 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/build/repo/core/target/scala-3.8.1-RC1/classes/logback.xml]
382520:45:42,131 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@11bd5cb4 - Resource [logback.xml] occurs multiple times on the classpath.
382620:45:42,131 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@11bd5cb4 - Resource [logback.xml] occurs at [file:/build/repo/core/target/scala-3.8.1-RC1/classes/logback.xml]
382720:45:42,131 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@11bd5cb4 - Resource [logback.xml] occurs at [jar:file:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/com/phasmidsoftware/flog_3/1.0.11/flog_3-1.0.11.jar!/logback.xml]
382820:45:42,131 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@11bd5cb4 - Resource [logback.xml] occurs at [file:/build/repo/expression/target/scala-3.8.1-RC1/classes/logback.xml]
382920:45:42,131 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@11bd5cb4 - Resource [logback.xml] occurs at [file:/build/repo/algebra/target/scala-3.8.1-RC1/classes/logback.xml]
383020:45:42,186 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - Main configuration file URL: file:/build/repo/core/target/scala-3.8.1-RC1/classes/logback.xml
383120:45:42,186 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - FileWatchList= {/build/repo/core/target/scala-3.8.1-RC1/classes/logback.xml}
383220:45:42,186 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - URLWatchList= {}
383320:45:42,189 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@3b07b957 - value "logs/Number.log" substituted for "${HOME_LOG}"
383420:45:42,190 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
383520:45:42,190 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
383620:45:42,198 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
383720:45:42,227 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - NOTE: Writing to the console can be slow. Try to avoid logging to the
383820:45:42,227 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - console in production environments, especially in high volume systems.
383920:45:42,227 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also https://logback.qos.ch/codes.html#slowConsole
384020:45:42,228 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [FILE-ROLLING]
384120:45:42,228 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
384220:45:42,231 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@3b07b957 - value "logs/Number.log" substituted for "${HOME_LOG}"
384320:45:42,234 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@350394039 - setting totalSizeCap to 20 GB
384420:45:42,237 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@350394039 - Archive files will be limited to [10 MB] each.
384520:45:42,237 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@350394039 - Will use gz compression
384620:45:42,239 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@350394039 - Will use the pattern logs/archived/app.%d{yyyy-MM-dd}.%i.log for the active file
384720:45:42,241 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@553910af - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/archived/app.%d{yyyy-MM-dd}.%i.log.gz'.
384820:45:42,241 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@553910af - Roll-over at midnight.
384920:45:42,241 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@553910af - Setting initial period to 2026-01-13T19:44:53.795Z
385020:45:42,242 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
385120:45:42,243 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Active log file name: logs/Number.log
385220:45:42,243 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Setting currentFileLength to 0 for logs/Number.log
385320:45:42,243 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - File property is set to [logs/Number.log]
385420:45:42,244 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [ASYNC] not referenced. Skipping further processing.
385520:45:42,245 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to WARN
385620:45:42,245 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
385720:45:42,245 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to WARN
385820:45:42,245 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [FILE-ROLLING] to Logger[ROOT]
385920:45:42,245 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@2e1abe40 - End of configuration.
386020:45:42,246 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@28d177d5 - Registering current configuration as safe fallback point
386120:45:42,246 |-INFO in ch.qos.logback.classic.util.ContextInitializer@17eade0a - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 116 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
3862
3863[info] LaTeXParserSpec:
3864[info] LaTeXParser
3865[info] - should apply number expressions
3866[info] - should apply pi
3867[info] - should apply e
3868[info] - should apply functions
3869[info] parsed expressions
3870[info] - should apply number expressions
3871[info] degrees and percentages
3872[info] - should parse percentages and degrees
3873[info] ExpressionParserSpec:
3874[info] ExpressionParser
3875[info] - should puremath number expressions
3876[info] - should lazymath number expressions
3877[info] - should puremath pi
3878[info] - should lazymath pi
3879[info] - should puremath e
3880[info] - should lazymath e
3881[info] - should puremath functions
3882[info] - should lazymath functions
3883[info] - should puremath symbols
3884[info] - should lazymath symbols
3885Starting build for ProjectRef(file:/build/repo/,top) (number-top)... [5/6]
3886Compile scalacOptions: -encoding, UTF-8, -unchecked, -Wvalue-discard, -Wnonunit-statement, -explain, -Wunused:imports, -Wunused:privates, -Wunused:locals, -Wconf:msg=Couldn't resolve a member:s, -Wconf:msg=any2stringadd:e, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
3887[info] compiling 1 Scala source to /build/repo/top/target/scala-3.8.1-RC1/test-classes ...
3888[info] done compiling
388920:45:46,275 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.23
389020:45:46,276 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5c638e30 - No custom configurators were discovered as a service.
389120:45:46,276 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5c638e30 - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
389220:45:46,276 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5c638e30 - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
389320:45:46,276 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
389420:45:46,276 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/build/repo/top/target/scala-3.8.1-RC1/classes/logback.xml]
389520:45:46,277 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@130ee7d3 - Resource [logback.xml] occurs multiple times on the classpath.
389620:45:46,277 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@130ee7d3 - Resource [logback.xml] occurs at [file:/build/repo/core/target/scala-3.8.1-RC1/classes/logback.xml]
389720:45:46,277 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@130ee7d3 - Resource [logback.xml] occurs at [jar:file:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/com/phasmidsoftware/flog_3/1.0.11/flog_3-1.0.11.jar!/logback.xml]
389820:45:46,277 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@130ee7d3 - Resource [logback.xml] occurs at [file:/build/repo/top/target/scala-3.8.1-RC1/classes/logback.xml]
389920:45:46,277 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@130ee7d3 - Resource [logback.xml] occurs at [file:/build/repo/expression/target/scala-3.8.1-RC1/classes/logback.xml]
390020:45:46,277 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@130ee7d3 - Resource [logback.xml] occurs at [file:/build/repo/algebra/target/scala-3.8.1-RC1/classes/logback.xml]
390120:45:46,328 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - Main configuration file URL: file:/build/repo/top/target/scala-3.8.1-RC1/classes/logback.xml
390220:45:46,328 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - FileWatchList= {/build/repo/top/target/scala-3.8.1-RC1/classes/logback.xml}
390320:45:46,328 |-INFO in ch.qos.logback.classic.model.processor.ConfigurationModelHandlerFull - URLWatchList= {}
390420:45:46,330 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@2d2bb205 - value "logs/Number.log" substituted for "${HOME_LOG}"
390520:45:46,331 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
390620:45:46,332 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
390720:45:46,336 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
390820:45:46,358 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - NOTE: Writing to the console can be slow. Try to avoid logging to the
390920:45:46,358 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - console in production environments, especially in high volume systems.
391020:45:46,358 |-INFO in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also https://logback.qos.ch/codes.html#slowConsole
391120:45:46,359 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [FILE-ROLLING]
391220:45:46,359 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
391320:45:46,361 |-INFO in ch.qos.logback.core.model.processor.ModelInterpretationContext@2d2bb205 - value "logs/Number.log" substituted for "${HOME_LOG}"
391420:45:46,365 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@997954075 - setting totalSizeCap to 20 GB
391520:45:46,366 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@997954075 - Archive files will be limited to [10 MB] each.
391620:45:46,366 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@997954075 - Will use gz compression
391720:45:46,368 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@997954075 - Will use the pattern logs/archived/app.%d{yyyy-MM-dd}.%i.log for the active file
391820:45:46,370 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@7ba9894a - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/archived/app.%d{yyyy-MM-dd}.%i.log.gz'.
391920:45:46,370 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@7ba9894a - Roll-over at midnight.
392020:45:46,370 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy@7ba9894a - Setting initial period to 2026-01-13T19:44:53.795Z
392120:45:46,371 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
392220:45:46,372 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Active log file name: logs/Number.log
392320:45:46,372 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - Setting currentFileLength to 0 for logs/Number.log
392420:45:46,372 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE-ROLLING] - File property is set to [logs/Number.log]
392520:45:46,373 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [ASYNC] not referenced. Skipping further processing.
392620:45:46,373 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to WARN
392720:45:46,373 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
392820:45:46,374 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to WARN
392920:45:46,374 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [FILE-ROLLING] to Logger[ROOT]
393020:45:46,374 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@1ffdd993 - End of configuration.
393120:45:46,374 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6f36ebf3 - Registering current configuration as safe fallback point
393220:45:46,374 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5c638e30 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 98 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
3933
3934[info] TopSpec:
3935[info] Noop
3936[info] - should return Noop
3937[info] - should throw exception
3938[info] - should return None
3939[info] math and lazymath
3940[info] - should parse and render numbers
3941[info] - should parse and render angles
3942[info] - should cancel multiplication and division with simplify 1
3943[info] - should show that lazy evaluation sometimes works even when you don't use it (a2)
3944[info] - should properly simplify 1 * (root3 / root3 * 3)
3945[info] - should distributeProductSum b 0
3946[info] - should distributeProductSum b 1
3947[info] - should distributeProductSum b 2
3948[info] - should distributeProductPower on root(3) * root(3)
3949[info] - should cancel addition and subtraction (a)
3950[info] - should use multiply instead of addition
3951[info] - should work for Negate
3952[info] - should work for Negate Negate
3953[info] - should work for Reciprocal
3954[info] - should work for Reciprocal Reciprocal
3955[info] - should work for Negate Zero
3956[info] - should work for Reciprocal Zero
3957[info] - should work for Reciprocal One
3958[info] - should work for Reciprocal Two
3959[info] - should work for Exp Infinity
3960[info] - should work for Exp neg Infinity
3961[info] - should work for Exp Zero
3962[info] - should work for Exp One
3963[info] - should work for Ln Zero
3964[info] - should work for Ln One
3965[info] - should work for Ln e
3966[info] - should work for Sine 0, etc.
3967[info] - should work for Sine pi/2, etc.
3968[info] - should work for Cosine pi
3969[info] - should cancel multiplication and division with simplify 2
3970[info] - should simplify sqrt(7)∧2
3971[info] - should simplify phi∧2
3972[info] - should cancel 1 + -1
3973[info] - should cancel 2 * 1/2 (a)
3974[info] - should work for multi-levels 1
3975[info] - should work for multi-levels 2
3976[info] - should simplify binary expression 3
3977[info] - should simplify aggregate 4a
3978[info] - should simplify aggregate 4b
3979[info] Other stuff
3980[info] - should
3981
3982************************
3983Build summary:
3984[{
3985 "module": "number-expression",
3986 "compile": {"status": "ok", "tookMs": 37490, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
3987 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
3988 "test-compile": {"status": "ok", "tookMs": 16266, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
3989 "test": {"status": "ok", "tookMs": 2322, "passed": 657, "failed": 0, "ignored": 0, "skipped": 0, "total": 657, "byFramework": [{"framework": "unknown", "stats": {"passed": 657, "failed": 0, "ignored": 0, "skipped": 0, "total": 657}}]},
3990 "publish": {"status": "skipped", "tookMs": 0},
3991 "metadata": {
3992 "crossScalaVersions": ["2.12.20"]
3993}
3994},{
3995 "module": "number-algebra",
3996 "compile": {"status": "ok", "tookMs": 128, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
3997 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
3998 "test-compile": {"status": "ok", "tookMs": 5966, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
3999 "test": {"status": "ok", "tookMs": 885, "passed": 321, "failed": 0, "ignored": 0, "skipped": 0, "total": 321, "byFramework": [{"framework": "unknown", "stats": {"passed": 321, "failed": 0, "ignored": 0, "skipped": 0, "total": 321}}]},
4000 "publish": {"status": "skipped", "tookMs": 0},
4001 "metadata": {
4002 "crossScalaVersions": ["2.12.20"]
4003}
4004},{
4005 "module": "number-core",
4006 "compile": {"status": "ok", "tookMs": 67, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
4007 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
4008 "test-compile": {"status": "ok", "tookMs": 22489, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
4009 "test": {"status": "failed", "tookMs": 6464, "passed": 1826, "failed": 2, "ignored": 10, "skipped": 0, "total": 1838, "byFramework": [{"framework": "unknown", "stats": {"passed": 1826, "failed": 2, "ignored": 10, "skipped": 0, "total": 1838}}]},
4010 "publish": {"status": "skipped", "tookMs": 0},
4011 "metadata": {
4012 "crossScalaVersions": ["2.12.20"]
4013}
4014},{
4015 "module": "number",
4016 "compile": {"status": "ok", "tookMs": 4930, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
4017 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
4018 "test-compile": {"status": "ok", "tookMs": 352, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
4019 "test": {"status": "ok", "tookMs": 354, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
4020 "publish": {"status": "ok", "tookMs": 6},
4021 "metadata": {
4022 "crossScalaVersions": ["2.12.20"]
4023}
4024},{
4025 "module": "number-parse",
4026 "compile": {"status": "ok", "tookMs": 199, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
4027 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
4028 "test-compile": {"status": "ok", "tookMs": 1559, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
4029 "test": {"status": "ok", "tookMs": 1047, "passed": 16, "failed": 0, "ignored": 0, "skipped": 0, "total": 16, "byFramework": [{"framework": "unknown", "stats": {"passed": 16, "failed": 0, "ignored": 0, "skipped": 0, "total": 16}}]},
4030 "publish": {"status": "skipped", "tookMs": 0},
4031 "metadata": {
4032 "crossScalaVersions": ["2.12.20"]
4033}
4034},{
4035 "module": "number-top",
4036 "compile": {"status": "ok", "tookMs": 247, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
4037 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
4038 "test-compile": {"status": "ok", "tookMs": 2292, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
4039 "test": {"status": "ok", "tookMs": 1255, "passed": 43, "failed": 0, "ignored": 0, "skipped": 0, "total": 43, "byFramework": [{"framework": "unknown", "stats": {"passed": 43, "failed": 0, "ignored": 0, "skipped": 0, "total": 43}}]},
4040 "publish": {"status": "skipped", "tookMs": 0},
4041 "metadata": {
4042 "crossScalaVersions": ["2.12.20"]
4043}
4044}]
4045************************
4046[error] Scala3CommunityBuild$ProjectBuildFailureException: 1 module(s) finished with failures: number-core
4047[error] (Global / runBuild) Scala3CommunityBuild$ProjectBuildFailureException: 1 module(s) finished with failures: number-core
4048[error] Total time: 112 s (0:01:52.0), completed Jan 13, 2026, 8:45:47 PM
4049[0JBuild failed, not retrying.