9b01964e创建于 2025年6月21日历史提交
package scientific

import std.io.*
import std.env.*
import std.convert.*

import scientific.linear.benchmarks.*
import scientific.matplot.testTCDF
import std.env.*
import std.argopt.*

func runTests(): Unit {
    // Import and run any tests here.
    // testTCDF()
}


main(args: Array<String>): Unit {
    // Check for system arguments
    let argSpecs = [
        Long("test", RequiredValue),
        Long("size", RequiredValue),
        Long("seed", RequiredValue)
    ]
    try {
        var result = parseArguments(args, argSpecs)
        if (result.options.contains("test")) {
            let test = result.options.get("test").getOrThrow()
            let arg_size = result.options.get("size").getOrThrow {
                ArgumentParseException("argument --size is not found")
            }
            let size = Int64.tryParse(arg_size).getOrThrow {
                IllegalArgumentException("cannot parse size ${arg_size}")
            }
            let arg_seed = result.options.get("seed").getOrThrow {
                ArgumentParseException("argument --seed is not found")
            }
            let seed = Int64.tryParse(arg_seed).getOrThrow {
                IllegalArgumentException("cannot parse seed ${arg_seed}")
            }
            var time: Float64 = 0.0
            if (test == "mult") {
                multPerformance(size, seed)
            } else if (test == "solve") {
                solvePerformance(size, seed)
            } else if (test == "inv") {
                invPerformance(size, seed)
            } else {
                throw IllegalArgumentException("Unrecognized testname ${test}.")
            }
        } else {
            // Otherwise, run unit tests
            runTests()
        }
    } catch (e: ArgumentParseException) {
        println("Usage: --test {mult/solve/inv} --size {size} --seed {seed}")
    }
}