1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Copyright (c) Cole Frederick. All rights reserved.
// The use and distribution terms for this software are covered by the
// Eclipse Public License 1.0 (https://opensource.org/licenses/eclipse-1.0.php)
// which can be found in the file epl-v10.html at the root of this distribution.
// By using this software in any fashion, you are agreeing to be bound by the terms of this license.
// You must not remove this notice, or any other, from this software.

//! Algorithms for arrays.
//!
//! Sorting arrays. Stable sort. Heap sort.
//! Algorithms on polynomials; convolution
//! Algorithms on matrices; sum, multiply
//! - linear algebra
//!
//! Heap implementation

// array:
//   bignum: arithmetic +-*/%(pow)mod bitwise ^|&<<>>
//   polynomial: evaluate, add, sub, convolve
//   matrix: add, sub, multiply, linear algebra-rref
// instances: byte, bool, int, float, long, double, object (value?)
//

// array definitions
// header, like string/symbol etc, and pointer to primitive typed buffer
// byte array to base64
// printing arrays nicely
// TODO look at R arrays and other data types

// heap sort, merge sort, quick sort
pub struct BigIntegral {}

pub fn convolve(a: &[f64], b: &[f64]) -> Box<[f64]> {
    unimplemented!()
}

pub struct Matrix {}

pub fn multiply(a: Matrix, b: Matrix) -> Matrix {
    unimplemented!()
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn it_works() {
        assert_eq!(2 + 2, 4);
    }
}