Order Calculator

Multi-Input Module




Single-Input Module


Results

...

Code Reference

Python:

import numpy as np

def order(errors, nlist=None):
    if nlist == None:
        n = len(errors)
        return [np.log(errors[k] / errors[k + 1]) / np.log(2) for k in range(n - 1)]
    else:
        n = len(errors)
        assert len(nlist) == n
        return [-(np.log(errors[k] / errors[k + 1])) / (np.log(nlist[k] / nlist[k + 1])) for k in range(n - 1)]
        

MATLAB:

function result = order(errors, nlist)
    if nargin < 2
        n = length(errors);
        result = zeros(1, n - 1);
        for k = 1:(n - 1)
            result(k) = log(errors(k) / errors(k + 1)) / log(2);
        end
    else
        n = length(errors);
        assert(length(nlist) == n, 'Length of nlist must be equal to length of errors');
        result = zeros(1, n - 1);
        for k = 1:(n - 1)
            result(k) = -(log(errors(k) / errors(k + 1)) / log(nlist(k) / nlist(k + 1)));
        end
    end
end
    

Mathematica:

order[errors_List, nlist_List: {}] := Module[{n, result},
    If[Length[nlist] == 0,
    n = Length[errors];
    result = Table[Log[errors[[k]]/errors[[k + 1]]]/Log[2], {k, 1, n - 1}],
    n = Length[errors];
    If[Length[nlist] == n,
        result = Table[-(Log[errors[[k]]/errors[[k + 1]]]/Log[nlist[[k]]/nlist[[k + 1]]]), {k, 1, n - 1}],
        Print["Length of nlist must be equal to length of errors"]]];result]
    

Cpp:

std::vector<double> order(const std::vector<double> &errors) {
    auto n = errors.size();
    std::vector<double> result(n - 1);
    for (auto k = 0; k < n - 1; ++k) {
        result[k] = log(errors[k] / errors[k + 1]) / log(2);
    }

    return result;
}

std::vector<double> order(const std::vector<double> &errors,
                            const std::vector<double> &nlist) {
    auto n = errors.size();
    assert(nlist.size() == n && "Length of nlist must be equal to length of errors");

    std::vector<double> result(n - 1);
    for (auto k = 0; k < n - 1; ++k) {
        result[k] = -(log(errors[k] / errors[k + 1]) / log(nlist[k] / nlist[k + 1]));
    }

    return result;
}