@vectorize(['float32(float32, float32, float32)',
'float64(float64, float64, float64)'],
target='gpu')
def cu_discriminant(a, b, c):
return math.sqrt(b ** 2 - 4 * a * c)
The 'float32/64' type signatures are not strictly necessary, unless you want to define the output type (so if the inputs are 32-bit floats and you don't want it to return 64-bit floats); if given no signature numba will automatically compile a new kernel each time the function is called with a new type signature. So that function would become (but in current numba 'gpu' should be replaced with 'cuda'): @vectorize(target='gpu')
def cu_discriminant(a, b, c):
return math.sqrt(b ** 2 - 4 * a * c)
Vectorize is a little limited in that it only operates on scalars and broadcasts those scalar operations over arrays.
In any case, even if the process was terribly corrupt, I'm not sure why that would have you so bothered. Last sentence from the USPS press release on Oshkosh winning: "The Postal Service receives no tax dollars for operating expenses and relies on the sale of postage, products and services to fund its operations." https://about.usps.com/newsroom/national-releases/2021/0223-...
Both results are on the first page of a google search for 'usps truck bids'.