qualia_cli/handlers/
solve.rs1use crate::cli::{
2 LinalgAction, OdeAction, OptimizeAction, QuantumSolveAction, SolveAction, SymbolicSolveAction,
3};
4use crate::solve;
5
6pub fn handle(action: &SolveAction) {
7 match action {
8 SolveAction::Linalg { action } => match action {
9 LinalgAction::Multiply { matrix_a, matrix_b } => {
10 solve::run_matrix_multiply(matrix_a, matrix_b);
11 }
12 LinalgAction::Determinant { matrix } => {
13 solve::run_determinant(matrix);
14 }
15 LinalgAction::SolveSystem { matrix, vector } => {
16 solve::run_solve_system(matrix, vector);
17 }
18 LinalgAction::Eigenvalues { matrix, count } => {
19 solve::run_eigenvalues(matrix, *count);
20 }
21 LinalgAction::TensorContract { tensor } => {
22 solve::run_tensor_contract(tensor);
23 }
24 },
25 SolveAction::Optimize { action } => match action {
26 OptimizeAction::Simplex {
27 initial,
28 iterations,
29 } => {
30 solve::run_simplex(initial, *iterations);
31 }
32 OptimizeAction::Root {
33 initial,
34 lower,
35 upper,
36 tolerance,
37 } => {
38 solve::run_root(*initial, *lower, *upper, *tolerance);
39 }
40 OptimizeAction::CurveFit {
41 initial_params,
42 x_data,
43 y_data,
44 } => {
45 solve::run_curve_fit(initial_params, x_data, y_data);
46 }
47 },
48 SolveAction::Ode { action } => match action {
49 OdeAction::Rk4 {
50 lambda,
51 t_start,
52 t_end,
53 y0,
54 step_size,
55 } => {
56 solve::run_ode_rk4(*lambda, *t_start, *t_end, *y0, *step_size);
57 }
58 OdeAction::Harmonic {
59 omega,
60 t_start,
61 t_end,
62 y0,
63 step_size,
64 } => {
65 solve::run_ode_harmonic(*omega, *t_start, *t_end, *y0, *step_size);
66 }
67 OdeAction::Bvp {
68 t_start,
69 t_end,
70 y_left,
71 y_right,
72 threshold,
73 } => {
74 solve::run_ode_bvp(*t_start, *t_end, *y_left, *y_right, *threshold);
75 }
76 OdeAction::QuantumSpectrum {
77 planck_mass,
78 coupling,
79 max_n,
80 frequency,
81 } => {
82 solve::run_ode_quantum_spectrum(*planck_mass, *coupling, *max_n, *frequency);
83 }
84 },
85 SolveAction::Quantum { action } => match action {
86 QuantumSolveAction::Qaoa { depth, beta, gamma } => {
87 solve::run_quantum_qaoa(*depth, beta, gamma);
88 }
89 QuantumSolveAction::Spsa {
90 num_params,
91 initial,
92 } => {
93 solve::run_quantum_spsa(*num_params, initial);
94 }
95 },
96 SolveAction::Symbolic { action } => match action {
97 SymbolicSolveAction::Defeasible { facts, rules } => {
98 solve::run_symbolic_defeasible(facts, rules);
99 }
100 SymbolicSolveAction::Sat { clauses } => {
101 solve::run_symbolic_sat(clauses);
102 }
103 },
104 }
105}