# Computation Expansions to Float64 invalid with certain GPUs

**URL:** <https://discourse.julialang.org/t/computation-expansions-to-float64-invalid-with-certain-gpus/128223>\
**Category:** General Usage\
**Created:** [April 19, 2025, 2:40pm UTC](https://discourse.julialang.org/t/computation-expansions-to-float64-invalid-with-certain-gpus/128223 "2025-04-19T14:40:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mj2984](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mj2984/32/43833_2.png) [@mj2984](https://discourse.julialang.org/u/mj2984)\
**Post date:** [April 19, 2025, 2:40pm UTC](https://discourse.julialang.org/t/computation-expansions-to-float64-invalid-with-certain-gpus/128223/1 "2025-04-19T14:40:13Z")

</div>

I encountered an issue trying to use OpenCL on my Laptop with intel iGPU, using Float16 computations. The GPU does not support Float64.

The typical error message for this would be :: Reason :: unsupported use of double value.

To use the math expression ^, there are some checks for which the data is cast into Float64. I am able to bypass it by calling the pow\_body function directly, but I feel that this should be informed in this forum to have better consistency (I believe I saw similar threads on metal.jl as well).

math.jl line → y == yint && return x^yint  
float.jl line → ($op)(x::Union{Float16,Float32}, y::Union{Int32,UInt32}) = ($op)(Float64(x), Float64(y))
