95 {
96
97
99 1, 2, 3, 4,
100 {-1.650629191439388});
101
102
103
105 18, 12, -190, 200,
106 {-4.,
107 1.666666666666667,
108 });
109
111 10, -20, -30, 40,
112 {-1.561552812808830,
113
114 1.,
115 2.561552812808830,
116
117 });
118
120 -10, 200, 300, -400,
121 {-2.179884793243323,
122
123 0.8607083693981839,
124
125 21.31917642384514,
126
127 });
128
130 -1, 0, 5, -7,
131 {-2.747346540307211,
132
133 });
134
136 2, -3, 0, 3,
137 {-0.806443932358772,
138
139 });
140
142 1, 0, 0, -9,
143 {2.080083823051904,
144
145 });
146
148 2, -3, -4, 0,
149 {-0.8507810593582122,
150
151 0.,
152 2.350781059358212
153
154 });
155
157 -0.33790159225463867, -0.81997990608215332,
158 -0.66327774524688721, -0.17884063720703125,
159 {-0.7995944894729731});
160
161
162
163
164
166 sk_bit_cast<double>(0xbf1a8de580000000),
167 sk_bit_cast<double>(0x4106c0c680000000),
168 0.0,
169 sk_bit_cast<double>(0xc104c0ce80000000),
170 { -0.9550418733785169,
171 0.9550418733785169,
172
173 },
174 true , true );
175
177 sk_bit_cast<double>(0x3c04040400000000),
178 sk_bit_cast<double>(0x4106c0c680000000),
179 0.0,
180 sk_bit_cast<double>(0xc104c0ce80000000),
181 { -0.9550418733785169,
182 0.9550418733785169,
183
184 },
185 true );
186
188 sk_bit_cast<double>(0x3eb0000000000000),
189 sk_bit_cast<double>(0x409278a560000000),
190 0.0,
191 sk_bit_cast<double>(0xc092706160000000),
192 { -0.9991256228290017,
193
194 0.9991256228290017,
195
196
197 },
198 true, true );
199}
static void testCubicRootsReal(skiatest::Reporter *reporter, std::string name, double A, double B, double C, double D, SkSpan< const double > expectedRoots, bool skipPathops=false, bool skipRootValidation=false)