FastLED 3.9.15
Loading...
Searching...
No Matches
ratio.h
Go to the documentation of this file.
1#pragma once
2
8
9#include "fl/stl/int.h"
11
12namespace fl {
13
20template<fl::i64 Num, fl::i64 Denom = 1>
21struct ratio {
22 FL_STATIC_ASSERT(Denom != 0, "ratio denominator cannot be zero");
23
24 static constexpr fl::i64 num = Num;
25 static constexpr fl::i64 den = Denom;
26};
27
33template<typename R1, typename R2>
35 R1::num * R2::den,
36 R1::den * R2::num
37>;
38
44template<typename R1, typename R2>
46 R1::num * R2::num,
47 R1::den * R2::den
48>;
49
50// Common SI ratio types
61
62} // namespace fl
ratio< 10, 1 > deca
10/1
Definition ratio.h:56
ratio< 1000000000, 1 > giga
1,000,000,000/1
Definition ratio.h:60
ratio< 1, 10 > deci
1/10
Definition ratio.h:55
ratio< 1000000, 1 > mega
1,000,000/1
Definition ratio.h:59
ratio< 1, 1000000000 > nano
1/1,000,000,000
Definition ratio.h:51
ratio< 1000, 1 > kilo
1,000/1
Definition ratio.h:58
ratio< 1, 1000000 > micro
1/1,000,000
Definition ratio.h:52
ratio< 1, 1000 > milli
1/1,000
Definition ratio.h:53
fl::i64 i64
Definition s16x16x4.h:222
ratio< R1::num *R2::den, R1::den *R2::num > ratio_divide
Divide two ratios at compile time.
Definition ratio.h:34
ratio< R1::num *R2::num, R1::den *R2::den > ratio_multiply
Multiply two ratios at compile time.
Definition ratio.h:45
ratio< 100, 1 > hecto
100/1
Definition ratio.h:57
ratio< 1, 100 > centi
1/100
Definition ratio.h:54
Base definition for an LED controller.
Definition crgb.hpp:179
Portable compile-time assertion wrapper.
FL_STATIC_ASSERT(Denom !=0, "ratio denominator cannot be zero")
Compile-time rational arithmetic.
Definition ratio.h:21