
__device__ void chebyshev_polynomial(double x, double* y, int o)
{
    switch(o) {
    case 0:
	*y = 1.0;
	break;
    case 1:
	*y = x;
	break;
    case 2:
	*y = 2.0*x*x - 1.0;
	break;
    case 3:
	*y = x*(4.0*x*x - 3.0);
	break;
    case 4:
	*y = 8.0*x*x*x*x - 8.0*x*x + 1.0;
	break;
    case 5:
	*y = x*(16.0*x*x*x*x - 20.0*x*x + 5.0);
	break;
    case 6:
	*y = 32.0*x*x*x*x*x*x - 48.0*x*x*x*x + 18.0*x*x - 1.0;
	break;
    case 7:
	*y = x*(64.0*x*x*x*x*x*x - 112.0*x*x*x*x + 56.0*x*x - 7.0);
	break;
    case 8:
	*y = 128.0*x*x*x*x*x*x*x*x - 256.0*x*x*x*x*x*x + 160.0*x*x*x*x - 32.0*x*x + 1.0;
	break;
    case 9:
	*y = x*(256.0*x*x*x*x*x*x*x*x - 576.0*x*x*x*x*x*x + 432.0*x*x*x*x - 120.0*x*x + 9.0);
	break;
    case 10:
	*y = 512.0*x*x*x*x*x*x*x*x*x*x - 1280.0*x*x*x*x*x*x*x*x + 1120.0*x*x*x*x*x*x - 400.0*x*x*x*x + 50.0*x*x - 1.0;
	break;
    case 11:
	*y = x*(1024.0*x*x*x*x*x*x*x*x*x*x - 2816.0*x*x*x*x*x*x*x*x + 2816.0*x*x*x*x*x*x - 1232.0*x*x*x*x + 220.0*x*x - 11.0);
	break;
    case 12:
	*y = 2048.0*x*x*x*x*x*x*x*x*x*x*x*x - 6144.0*x*x*x*x*x*x*x*x*x*x + 6912.0*x*x*x*x*x*x*x*x - 3584.0*x*x*x*x*x*x + 840.0*x*x*x*x - 72.0*x*x + 1.0;
	break;
    case 13:
	*y = x*(4096.0*x*x*x*x*x*x*x*x*x*x*x*x - 13312.0*x*x*x*x*x*x*x*x*x*x + 16640.0*x*x*x*x*x*x*x*x - 9984.0*x*x*x*x*x*x + 2912.0*x*x*x*x - 364.0*x*x + 13.0);
	break;
    case 14:
	*y = 8192.0*x*x*x*x*x*x*x*x*x*x*x*x*x*x - 28672.0*x*x*x*x*x*x*x*x*x*x*x*x + 39424.0*x*x*x*x*x*x*x*x*x*x - 26880.0*x*x*x*x*x*x*x*x + 9408.0*x*x*x*x*x*x - 1568.0*x*x*x*x + 98.0*x*x - 1.0;
	break;
    case 15:
	*y = x*(16384.0*x*x*x*x*x*x*x*x*x*x*x*x*x*x - 61440.0*x*x*x*x*x*x*x*x*x*x*x*x + 92160.0*x*x*x*x*x*x*x*x*x*x - 70400.0*x*x*x*x*x*x*x*x + 28800.0*x*x*x*x*x*x - 6048.0*x*x*x*x + 560.0*x*x - 15.0);
	break;
    case 16:
	*y = 32768.0*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x - 131072.0*x*x*x*x*x*x*x*x*x*x*x*x*x*x + 212992.0*x*x*x*x*x*x*x*x*x*x*x*x - 180224.0*x*x*x*x*x*x*x*x*x*x + 84480.0*x*x*x*x*x*x*x*x - 21504.0*x*x*x*x*x*x + 2688.0*x*x*x*x - 128.0*x*x + 1.0;
	break;
    default:
	*y = 0.0;
	break;
    }
}

	.file	"tmpxft_00202db9_00000000-6_gpu_chebyshev.cudafe1.cpp"
	.text
#APP

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB2011:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE2011:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.globl	_Z20chebyshev_polynomialdPdi
	.type	_Z20chebyshev_polynomialdPdi, @function
_Z20chebyshev_polynomialdPdi:
.LFB2008:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	popq	%rax
	.cfi_def_cfa_offset 8
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movl	$1, 12(%rsp)
	movl	12(%rsp), %edi
	call	exit@PLT
	.cfi_endproc
.LFE2008:
	.size	_Z20chebyshev_polynomialdPdi, .-_Z20chebyshev_polynomialdPdi
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB2034:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	movq	%rax, %rdi
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rdx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE2034:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.nvFatBinSegment,"aw"
	.align 8
	.type	_ZL15__fatDeviceText, @object
	.size	_ZL15__fatDeviceText, 24
_ZL15__fatDeviceText:
	.long	1180844977
	.long	1
	.quad	fatbinData
	.quad	0
	.local	_ZL20__cudaFatCubinHandle
	.comm	_ZL20__cudaFatCubinHandle,8,8
	.ident	"GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:


#include <hip/hip_runtime.h>

__device__ void chebyshev_polynomial(double x, double* y, int o)
{
    switch(o) {
    case 0:
	*y = 1.0;
	break;
    case 1:
	*y = x;
	break;
    case 2:
	*y = 2.0*x*x - 1.0;
	break;
    case 3:
	*y = x*(4.0*x*x - 3.0);
	break;
    case 4:
	*y = 8.0*x*x*x*x - 8.0*x*x + 1.0;
	break;
    case 5:
	*y = x*(16.0*x*x*x*x - 20.0*x*x + 5.0);
	break;
    case 6:
	*y = 32.0*x*x*x*x*x*x - 48.0*x*x*x*x + 18.0*x*x - 1.0;
	break;
    case 7:
	*y = x*(64.0*x*x*x*x*x*x - 112.0*x*x*x*x + 56.0*x*x - 7.0);
	break;
    case 8:
	*y = 128.0*x*x*x*x*x*x*x*x - 256.0*x*x*x*x*x*x + 160.0*x*x*x*x - 32.0*x*x + 1.0;
	break;
    case 9:
	*y = x*(256.0*x*x*x*x*x*x*x*x - 576.0*x*x*x*x*x*x + 432.0*x*x*x*x - 120.0*x*x + 9.0);
	break;
    case 10:
	*y = 512.0*x*x*x*x*x*x*x*x*x*x - 1280.0*x*x*x*x*x*x*x*x + 1120.0*x*x*x*x*x*x - 400.0*x*x*x*x + 50.0*x*x - 1.0;
	break;
    case 11:
	*y = x*(1024.0*x*x*x*x*x*x*x*x*x*x - 2816.0*x*x*x*x*x*x*x*x + 2816.0*x*x*x*x*x*x - 1232.0*x*x*x*x + 220.0*x*x - 11.0);
	break;
    case 12:
	*y = 2048.0*x*x*x*x*x*x*x*x*x*x*x*x - 6144.0*x*x*x*x*x*x*x*x*x*x + 6912.0*x*x*x*x*x*x*x*x - 3584.0*x*x*x*x*x*x + 840.0*x*x*x*x - 72.0*x*x + 1.0;
	break;
    case 13:
	*y = x*(4096.0*x*x*x*x*x*x*x*x*x*x*x*x - 13312.0*x*x*x*x*x*x*x*x*x*x + 16640.0*x*x*x*x*x*x*x*x - 9984.0*x*x*x*x*x*x + 2912.0*x*x*x*x - 364.0*x*x + 13.0);
	break;
    case 14:
	*y = 8192.0*x*x*x*x*x*x*x*x*x*x*x*x*x*x - 28672.0*x*x*x*x*x*x*x*x*x*x*x*x + 39424.0*x*x*x*x*x*x*x*x*x*x - 26880.0*x*x*x*x*x*x*x*x + 9408.0*x*x*x*x*x*x - 1568.0*x*x*x*x + 98.0*x*x - 1.0;
	break;
    case 15:
	*y = x*(16384.0*x*x*x*x*x*x*x*x*x*x*x*x*x*x - 61440.0*x*x*x*x*x*x*x*x*x*x*x*x + 92160.0*x*x*x*x*x*x*x*x*x*x - 70400.0*x*x*x*x*x*x*x*x + 28800.0*x*x*x*x*x*x - 6048.0*x*x*x*x + 560.0*x*x - 15.0);
	break;
    case 16:
	*y = 32768.0*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x - 131072.0*x*x*x*x*x*x*x*x*x*x*x*x*x*x + 212992.0*x*x*x*x*x*x*x*x*x*x*x*x - 180224.0*x*x*x*x*x*x*x*x*x*x + 84480.0*x*x*x*x*x*x*x*x - 21504.0*x*x*x*x*x*x + 2688.0*x*x*x*x - 128.0*x*x + 1.0;
	break;
    default:
	*y = 0.0;
	break;
    }
}

	.text
	.file	"gpu_chebyshev.hip"
	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               # 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __hip_cuid_

	.text
	.p2alignl 7, 3214868480
	.fill 96, 4, 3214868480
	.type	__hip_cuid_,@object             ; @__hip_cuid_
	.section	.bss,"aw",@nobits
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               ; 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __hip_cuid_
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.amdgpu_metadata
---
amdhsa.kernels:  []
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
