kyonifer / koma

A scientific computing library for Kotlin. https://kyonifer.github.io/koma
Other
270 stars 23 forks source link

Make top-level functions non-specific to a particular primitive type. #75

Open kyonifer opened 5 years ago

kyonifer commented 5 years ago

Right now the top-level koma functions often assume that we are dealing with double-valued matrices. For some cases this is a reasonable default, for example zeros(3,3) creates a double-valued matrix in numpy as it does in koma. However, other methods such as cos(someMatrix) in matrixfuncs.kt could easily be overloaded to handle different matrix primitive types. The top-level functions should probably be reworked to not be tied to Double as much as possible.

peastman commented 5 years ago

for example zeros(3,3) creates a double-valued matrix in numpy as it does in koma

Numpy also makes it easy to create arrays of other types. np.zeros((3, 3), dtype=np.float). Creating double arrays is just a default that you can override with one extra argument.

kyonifer commented 5 years ago

Koma also does this. You can write

zeros(3, 3, MatrixTypes.FloatType)

See here. The goal was to mimic the behavior of numpy but remain safely typed.