From b11731a82463fda73004a828dc299095f76de953 Mon Sep 17 00:00:00 2001 From: Chris Watson Date: Tue, 10 Sep 2019 19:06:36 -0700 Subject: [PATCH] Simplified structure --- src/apatite.cr | 8 ++---- src/apatite/error.cr | 7 +++++ src/apatite/linear_algebra.cr | 28 ------------------- src/apatite/linear_algebra/error.cr | 9 ------ src/apatite/{linear_algebra => }/matrix.cr | 2 +- .../matrix/eigenvalue_decomposition.cr | 2 +- .../matrix/lup_decomposition.cr | 2 +- src/apatite/{linear_algebra => }/ndarray.cr | 2 +- src/apatite/{linear_algebra => }/vector.cr | 2 +- 9 files changed, 15 insertions(+), 47 deletions(-) create mode 100644 src/apatite/error.cr delete mode 100644 src/apatite/linear_algebra.cr delete mode 100644 src/apatite/linear_algebra/error.cr rename src/apatite/{linear_algebra => }/matrix.cr (99%) rename src/apatite/{linear_algebra => }/matrix/eigenvalue_decomposition.cr (94%) rename src/apatite/{linear_algebra => }/matrix/lup_decomposition.cr (95%) rename src/apatite/{linear_algebra => }/ndarray.cr (96%) rename src/apatite/{linear_algebra => }/vector.cr (99%) diff --git a/src/apatite.cr b/src/apatite.cr index 861031f..1485560 100644 --- a/src/apatite.cr +++ b/src/apatite.cr @@ -1,6 +1,5 @@ -require "./apatite/core_ext/array" - -require "./apatite/linear_algebra" +require "./apatite/core_ext/*" +require "./apatite/*" # Apatite is a fundimental package for scientific computing in Crystal. If that # sounds like a modified version of the first line from the NumPy homepage, @@ -8,6 +7,5 @@ require "./apatite/linear_algebra" # of NumPy sitting atop the blazing speed and beautiful syntax # of Crystal. module Apatite - extend self - include Apatite::LinearAlgebra + end diff --git a/src/apatite/error.cr b/src/apatite/error.cr new file mode 100644 index 0000000..dd6116b --- /dev/null +++ b/src/apatite/error.cr @@ -0,0 +1,7 @@ +module Apatite + class Error < Exception; end + class ErrDimensionMismatch < Error; end + class ZeroVectorError < Error; end + class ErrNotRegular < Error; end + class ErrOperationNotDefined < Error; end +end diff --git a/src/apatite/linear_algebra.cr b/src/apatite/linear_algebra.cr deleted file mode 100644 index 42c553a..0000000 --- a/src/apatite/linear_algebra.cr +++ /dev/null @@ -1,28 +0,0 @@ -require "./linear_algebra/error" -# require "./linear_algebra/ndarray" -require "./linear_algebra/matrix" -require "./linear_algebra/vector" - -module Apatite - module LinearAlgebra - extend self - - # Calculates the sigmoid curve for a numeric input. - # - # `f(x) = 1/(1 + e^-x)` - # - # See also: [Sigmoid function (WikiWand)](https://www.wikiwand.com/en/Sigmoid_function) - def sigmoid(input : Number) - num = input.to_f64 - 1 / (1 + Math.exp(-num)) - end - - # Calculates the derivative sigmoid curve for a numeric input. - # - # `f'(x) = f(x)(1 - f(x)),` - def sigmoid_d(input : Number) - num = input.to_f64 - num * (1 - num) - end - end -end diff --git a/src/apatite/linear_algebra/error.cr b/src/apatite/linear_algebra/error.cr deleted file mode 100644 index d4612a3..0000000 --- a/src/apatite/linear_algebra/error.cr +++ /dev/null @@ -1,9 +0,0 @@ -module Apatite - module LinearAlgebra - class Error < Exception; end - class ErrDimensionMismatch < Error; end - class ZeroVectorError < Error; end - class ErrNotRegular < Error; end - class ErrOperationNotDefined < Error; end - end -end diff --git a/src/apatite/linear_algebra/matrix.cr b/src/apatite/matrix.cr similarity index 99% rename from src/apatite/linear_algebra/matrix.cr rename to src/apatite/matrix.cr index e23eb36..3de9015 100644 --- a/src/apatite/linear_algebra/matrix.cr +++ b/src/apatite/matrix.cr @@ -2,7 +2,7 @@ require "./vector" require "./matrix/eigenvalue_decomposition" require "./matrix/lup_decomposition" -module Apatite::LinearAlgebra +module Apatite class Matrix(T) include Enumerable(Vector) include Indexable(Vector) diff --git a/src/apatite/linear_algebra/matrix/eigenvalue_decomposition.cr b/src/apatite/matrix/eigenvalue_decomposition.cr similarity index 94% rename from src/apatite/linear_algebra/matrix/eigenvalue_decomposition.cr rename to src/apatite/matrix/eigenvalue_decomposition.cr index 275454f..0402614 100644 --- a/src/apatite/linear_algebra/matrix/eigenvalue_decomposition.cr +++ b/src/apatite/matrix/eigenvalue_decomposition.cr @@ -1,4 +1,4 @@ -module Apatite::LinearAlgebra +module Apatite class Matrix(T) # Eigenvalues and eigenvectors of a real matrix. # diff --git a/src/apatite/linear_algebra/matrix/lup_decomposition.cr b/src/apatite/matrix/lup_decomposition.cr similarity index 95% rename from src/apatite/linear_algebra/matrix/lup_decomposition.cr rename to src/apatite/matrix/lup_decomposition.cr index e3c1e26..5404eaf 100644 --- a/src/apatite/linear_algebra/matrix/lup_decomposition.cr +++ b/src/apatite/matrix/lup_decomposition.cr @@ -1,4 +1,4 @@ -module Apatite::LinearAlgebra +module Apatite class Matrix(T) # For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n # unit lower triangular matrix L, an n-by-n upper triangular matrix U, diff --git a/src/apatite/linear_algebra/ndarray.cr b/src/apatite/ndarray.cr similarity index 96% rename from src/apatite/linear_algebra/ndarray.cr rename to src/apatite/ndarray.cr index 8d6a702..1af6919 100644 --- a/src/apatite/linear_algebra/ndarray.cr +++ b/src/apatite/ndarray.cr @@ -1,4 +1,4 @@ -module Apatite::LinearAlgebra +module Apatite class NDArray # include Enumerable(Float64) # include Indexable(Float64) diff --git a/src/apatite/linear_algebra/vector.cr b/src/apatite/vector.cr similarity index 99% rename from src/apatite/linear_algebra/vector.cr rename to src/apatite/vector.cr index 5e4c6f9..68e7ec9 100644 --- a/src/apatite/linear_algebra/vector.cr +++ b/src/apatite/vector.cr @@ -2,7 +2,7 @@ require "complex" require "big" require "json" -module Apatite::LinearAlgebra +module Apatite # Represents a mathematical vector, and also constitutes a row or column # of a `Matrix` class Vector(T)