// File: /workspace/github_c_makefile_star2_O1/zpole[P]IICV/src/test_svd2.c
// Function: check_svd
void
check_svd (double *M , double * U, double * S, double *V)
{
  double T1 [4] ;
  double T2 [4] ;

  print_matrix("M",M) ;
  print_matrix("U",U) ;
  print_matrix("S",S) ;
  print_matrix("V",V) ;

  transp2(T1, V) ;
  prod2(T2, S, T1) ;
  prod2(T1, U, T2) ;
  print_matrix("USV'",T1) ;

  transp2(T1, U) ;
  prod2(T2, T1, U) ;
  print_matrix("U'U",T2) ;

  transp2(T1, V) ;
  prod2(T2, T1, V) ;
  print_matrix("V'V",T2) ;

  printf("det(M) = %f\n", det2(M)) ;
  printf("det(U) = %f\n", det2(U)) ;
  printf("det(V) = %f\n", det2(V)) ;
  printf("det(S) = %f\n", det2(S)) ;
  printf("\n") ;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rcx, %r14
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r12
movsd 0x10(%rdi), %xmm1
movsd (%rdi), %xmm0
movsd 0x8(%rdi), %xmm2
movsd 0x18(%rdi), %xmm3
leaq 0xdaf(%rip), %r13       # 0x2020
leaq 0xdcb(%rip), %rsi       # 0x2043
movq %r13, %rdi
movb $0x4, %al
callq 0x1040
movsd 0x10(%r15), %xmm1
movsd (%r15), %xmm0
movsd 0x8(%r15), %xmm2
movsd 0x18(%r15), %xmm3
leaq 0xdae(%rip), %rsi       # 0x204e
movq %r13, %rdi
movb $0x4, %al
callq 0x1040
movsd 0x10(%rbx), %xmm1
movsd (%rbx), %xmm0
movsd 0x8(%rbx), %xmm2
movsd 0x18(%rbx), %xmm3
leaq 0xd81(%rip), %rsi       # 0x2045
movq %r13, %rdi
movb $0x4, %al
callq 0x1040
movsd 0x10(%r14), %xmm1
movsd (%r14), %xmm0
movsd 0x8(%r14), %xmm2
movsd 0x18(%r14), %xmm3
leaq 0xd66(%rip), %rsi       # 0x2052
movq %r13, %rdi
movb $0x4, %al
callq 0x1040
movsd 0x10(%r14), %xmm0
movsd (%r14), %xmm5
movsd 0x8(%r14), %xmm1
movsd 0x18(%r14), %xmm6
movsd 0x10(%rbx), %xmm7
movapd %xmm0, %xmm8
mulsd %xmm7, %xmm8
movsd (%rbx), %xmm3
movsd 0x8(%rbx), %xmm4
movapd %xmm3, %xmm2
mulsd %xmm5, %xmm2
addsd %xmm8, %xmm2
movsd 0x18(%rbx), %xmm8
mulsd %xmm8, %xmm0
mulsd %xmm4, %xmm5
addsd %xmm0, %xmm5
mulsd %xmm6, %xmm7
mulsd %xmm1, %xmm3
addsd %xmm7, %xmm3
mulsd %xmm8, %xmm6
mulsd %xmm1, %xmm4
addsd %xmm6, %xmm4
movsd 0x10(%r15), %xmm6
movapd %xmm6, %xmm7
mulsd %xmm5, %xmm7
movsd (%r15), %xmm1
movsd 0x8(%r15), %xmm8
movapd %xmm1, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm7, %xmm0
movsd 0x18(%r15), %xmm7
mulsd %xmm7, %xmm5
mulsd %xmm8, %xmm2
addsd %xmm5, %xmm2
mulsd %xmm4, %xmm6
mulsd %xmm3, %xmm1
addsd %xmm6, %xmm1
mulsd %xmm7, %xmm4
mulsd %xmm8, %xmm3
addsd %xmm4, %xmm3
leaq 0xc91(%rip), %rsi       # 0x2047
movq %r13, %rdi
movb $0x4, %al
callq 0x1040
movsd 0x10(%r15), %xmm3
movsd (%r15), %xmm0
movsd 0x8(%r15), %xmm1
movsd 0x18(%r15), %xmm2
movapd %xmm1, %xmm4
mulsd %xmm1, %xmm4
movapd %xmm3, %xmm5
mulsd %xmm0, %xmm5
mulsd %xmm0, %xmm0
addsd %xmm4, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm5, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm3
addsd %xmm2, %xmm3
leaq 0xc42(%rip), %rsi       # 0x204c
movq %r13, %rdi
movapd %xmm1, %xmm2
movb $0x4, %al
callq 0x1040
movsd 0x10(%r14), %xmm3
movsd (%r14), %xmm0
movsd 0x8(%r14), %xmm1
movsd 0x18(%r14), %xmm2
movapd %xmm1, %xmm4
mulsd %xmm1, %xmm4
movapd %xmm3, %xmm5
mulsd %xmm0, %xmm5
mulsd %xmm0, %xmm0
addsd %xmm4, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm5, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm3
addsd %xmm2, %xmm3
leaq 0xbee(%rip), %rsi       # 0x2050
movq %r13, %rdi
movapd %xmm1, %xmm2
movb $0x4, %al
callq 0x1040
movsd 0x10(%r12), %xmm1
mulsd 0x8(%r12), %xmm1
movsd (%r12), %xmm0
mulsd 0x18(%r12), %xmm0
subsd %xmm1, %xmm0
leaq 0xbbe(%rip), %rdi       # 0x2054
movb $0x1, %al
callq 0x1040
movsd 0x10(%r15), %xmm1
mulsd 0x8(%r15), %xmm1
movsd (%r15), %xmm0
mulsd 0x18(%r15), %xmm0
subsd %xmm1, %xmm0
leaq 0xba2(%rip), %rdi       # 0x2061
movb $0x1, %al
callq 0x1040
movsd 0x10(%r14), %xmm1
mulsd 0x8(%r14), %xmm1
movsd (%r14), %xmm0
mulsd 0x18(%r14), %xmm0
subsd %xmm1, %xmm0
leaq 0xb86(%rip), %rdi       # 0x206e
movb $0x1, %al
callq 0x1040
movsd 0x10(%rbx), %xmm1
mulsd 0x8(%rbx), %xmm1
movsd (%rbx), %xmm0
mulsd 0x18(%rbx), %xmm0
subsd %xmm1, %xmm0
leaq 0xb6e(%rip), %rdi       # 0x207b
movb $0x1, %al
callq 0x1040
movl $0xa, %edi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x1030