Vinzent Steinberg
a76014227c
Fix macros in combination with serde1 feature
...
Before, the feature would be resolved in the crate where the macro was used,
not in the `average` crate as intended. Now, the macros are defined depending
on the `serde1` feature, fixing this issue.
2019-07-31 16:22:55 +02:00
Vinzent Steinberg
3853de8481
Fix clippy warnings
2019-07-08 17:32:44 +02:00
Vinzent Steinberg
31a8154e01
Fix serde1 feature and remove unneccessary crate import
2019-07-08 17:32:43 +02:00
Vinzent Steinberg
610f6cae6a
Clean up doctests
...
Also make sure that the macros work when they are imported in isolation.
2019-07-08 17:32:43 +02:00
Vinzent Steinberg
c9829a1279
Clean up tests
2019-07-08 17:32:42 +02:00
Vinzent Steinberg
9401f41558
Use Rust 2018 idioms
2019-07-08 16:04:59 +02:00
Vinzent Steinberg
1bdadfae1b
Make code compatible with Rust 2018
2019-07-08 16:04:19 +02:00
Vinzent Steinberg
25d894a2f6
Use custom implementation of binomial coefficient
...
This lets us get rid of the num-integer dependency and makes the
performance of the code generated by `define_moments` close to that of
`Kurtosis`. Before, it was several times slower.
However, the custom implementation is more vulnerable to integer
overflow. In practise, this should not matter, since it does not make
sense to calculate moments of very high order.
2019-05-22 15:51:11 +02:00
Vinzent Steinberg
c10616c46e
Improve concatenate!
to support usage outside braces
...
Fixes #12 .
2019-04-25 13:51:33 +02:00
Vinzent Steinberg
547149bfd2
Fix serde support
...
* Use correct Cargo flags.
* Fix tests.
* Fix histogram serialization.
2019-01-22 14:29:29 +01:00
Vinzent Steinberg
5a6fb296a4
Fix typo
2018-07-27 16:55:02 +02:00
Vinzent Steinberg
8c5121ca08
Suggest correct Serde feature
2018-07-27 16:53:27 +02:00
Vinzent Steinberg
f9dee3bf9b
Fix clippy warning
2018-07-27 16:52:01 +02:00
Vinzent Steinberg
bb994f0f22
Improve docs on calculation of arbitrary moments
2018-07-27 16:50:02 +02:00
Vinzent Steinberg
537a00c053
Fix type inference failure on some targets
2018-07-27 15:14:44 +02:00
Vinzent Steinberg
ee110a774f
define_histogram: Fix potential issue
2018-07-24 18:58:17 +02:00
Vinzent Steinberg
5807e211dc
Clarify core
is required for define_histogram
2018-07-24 18:52:40 +02:00
Vinzent Steinberg
56344750a7
Fixes to Histogram
...
1. Now histograms with more than 31 bins are supported (before there
were issues with missing implementations on arrays.)
2. The items defined by `define_histogram!` are in their own module, to
avoid issues with Rust's lack of macro hygiene for items.
2018-07-24 18:18:05 +02:00
Vinzent Steinberg
a7dde93df8
More idiomatic serde support
...
* Follow the suggestions from the Serde docs.
* Rename the feature from `serde` to `serde1`.
* Fix a doctest.
* Mention the feature in the README.
2018-07-11 12:54:37 +02:00
Vinzent Steinberg
34d33ef21a
Slightly improve calculation of standardized moment
...
Also test more of the trivial cases.
2018-07-11 12:37:06 +02:00
Vinzent Steinberg
3e7a66b519
Remove dead code
2018-07-11 12:31:32 +02:00
Vinzent Steinberg
663009f358
Make it possible to calculate an arbitrary number of moments
2018-07-10 17:19:57 +02:00
Vinzent Steinberg
0de183127e
Implement merge for Histogram
2018-07-06 13:27:26 +02:00
Vinzent Steinberg
fcbe51f1dd
Improve Histogram docs by exporting the Histogram10 special case
2018-07-06 13:08:33 +02:00
Vinzent Steinberg
554d4ca596
Use float-ord instead of quickersort
...
The latter has been deprecated.
2018-07-06 11:01:41 +02:00
Vinzent Steinberg
ef41836ec5
Small improvements to Histogram docs
2018-07-06 10:52:19 +02:00
Vinzent Steinberg
9f1c28147c
Moments: Improve docs
2018-07-06 10:08:18 +02:00
Vinzent Steinberg
7e06374843
histogram: Implement variance
...
This is useful for error estimates.
2018-03-07 17:45:38 +01:00
Vinzent Steinberg
0259728bb8
Fix constant width histograms for ranges not starting at 0
2018-03-07 17:37:06 +01:00
Vinzent Steinberg
c04ce8887e
histogram: Implement AddAssign
and MulAssign
...
Also clarify documentation and name of `min`/`max`.
2018-03-07 17:08:19 +01:00
Vinzent Steinberg
2775f78e8e
Expose finding of bin for given sample
2018-03-06 19:31:09 +01:00
Vinzent Steinberg
682fec27fe
histogram: Implement min, max and reset
2018-03-06 19:22:42 +01:00
Vinzent Steinberg
08445ba2a3
histogram: Inline default impls
2018-03-06 19:03:46 +01:00
Vinzent Steinberg
d1ab9630af
histogram: Implement iteration over bin centers
2018-03-06 18:55:21 +01:00
Vinzent Steinberg
3f22412aa3
Fix clippy warnings
2018-03-06 18:48:08 +01:00
Vinzent Steinberg
86a411143e
histogram: Implement iteration of bin widths and normalized bins
2018-03-06 18:27:31 +01:00
Vinzent Steinberg
c64544baa8
Implement iteration of histograms
2018-03-06 17:16:54 +01:00
Vinzent Steinberg
ba93bb4e65
Refactor histograms to use common trait
2018-03-06 16:26:02 +01:00
Vinzent Steinberg
dcb006e6e0
Merge branch 'master' of https://github.com/vks/average
2018-03-06 15:56:09 +01:00
Vinzent Steinberg
3a0dcafd21
Implement histograms
...
In order for them to have constant size, a macro is provided to crate
the histogram type. This should be replaced by const generics once Rust
has them.
2018-03-06 15:54:30 +01:00
Vinzent Steinberg
87bf71baa4
variable -> growing
2018-03-01 01:54:41 +01:00
Vinzent Steinberg
8b5fb44500
Clarify limitations of quantile algorithm
...
Refs #10 .
2018-03-01 01:33:39 +01:00
Vinzent Steinberg
e4345f5046
impl FromIterator<&f64> and FromIterator<&(f64, f64)>
...
This allows to write
let k: Kurtosis = a.iter().collect();
instead of
let k: Kurtosis = a.iter().map(|x| *x).collect();
but breaks type inference for code like
let m: Min = (1..6).map(Into::into).collect();
where
let m: Min = (1..6).map(f64::from).collect();
has to be used instead.
Fixes #8 .
2018-02-28 23:44:40 +01:00
Vinzent Steinberg
68a4fa64cb
Restore compatibility with stable
2018-01-12 14:23:38 +01:00
Vinzent Steinberg
a6a477d621
Benchmark generic vs. handwritten implementation of kurtosis
...
Also restore no_std and remove printing left over from debugging.
2018-01-11 19:37:25 +01:00
Vinzent Steinberg
785e2141e0
Moments: Refactor merge to be in-place
2018-01-11 19:30:51 +01:00
Vinzent Steinberg
0d6cf939d1
Clarify type of kurtosis
2018-01-11 19:22:11 +01:00
Vinzent Steinberg
df099b61da
Moments::merge: Calculate binomial iteratively
2018-01-11 19:19:56 +01:00
Vinzent Steinberg
9f2a8ee44f
Moments: Test merge
2018-01-11 19:16:11 +01:00
Vinzent Steinberg
49ce6c5256
Moments::add: Calculate binomials iteratively
2018-01-11 19:07:57 +01:00