2010-03-10 4 views
4

많은 계산을 수행하는 VB.NET으로 작성된 소프트웨어가 있습니다. 대부분 jpeg를 비트 맵으로 추출하고 곱슬 곱셈 및 행렬 곱셈과 같은 픽셀에서 계산을 계산합니다. 다른 컴퓨터는 동일한 입력을 가졌음에도 불구하고 나에게 다른 결과를 제공합니다. 그 이유는 무엇일까요?다른 컴퓨터가 VB.NET에서 다른 산술 결과를 계산하는 이유는 무엇입니까?

편집 : 그것은 독점이기 때문에이 알고리즘을 제공 할 수 있지만, 나는 모든 관련 작업을 제공 할 수 있습니다

  • ULONG \ ULONG (Turuncating 부문)
  • Bitmap.Load ("파일 이름을. BMP '()()
  • + 더블 더블
  • * 더블 더블 화소의 휘도를 얻기))
  • Bitmap.GetPixel (정수, 정수가 메모리에 비트 맵을로드
  • 인 Math.PI (더블)
  • Math.Sqrt
  • 와 Math.cos (더블)
  • ULONG - ULONG
  • ULONG * ULONG
  • ULONG < < ULONG
  • List.OrderBy (Double) (Func)

음 ... OrderBy가 비 안정 QuickSort 및 th를 사용할 수 있습니까? QuickSort에서 무작위 피벗을 사용하고 있습니까? 편집 : 테스트를 거쳤습니다. 종류가 안정적입니다.

+2

몇 가지 간단한 예제를 제공 할 수 있습니까? 누군가가 인식 할 수있는 패턴이있을 수 있지만 샘플이 없으면 훨씬 더 추측됩니다. – FrustratedWithFormsDesigner

+0

나는 계산이 달라지기 시작하는 첫 번째 지점을 찾으려고 제안합니다. 그러면 동일한 입력을 사용하여 다른 결과를 산출하는 단일 기본 연산으로 문제를 좁힐 수 있습니다. 다른 컴퓨터간에 눈에 띄는 차이점이 있습니까? 둘 다 동일한 OS를 실행하고 있습니까? 둘 다 32 비트 (또는 둘 다 64 비트)입니까? 결과가 어떻게 다릅니 까?부동 소수점 값의 차이 또는 그보다 더 중요한 점은 무엇입니까? 하나의 컴퓨터에서 다른 결과 집합을 얻었습니까? –

+0

다른 결과를 제공하는 컴퓨터를 제어 할 권한이 없습니다. 나는 그들이 어떤 컴퓨터 인지도 모른다. 사용자가 내 서버에 연결하여 복잡한 방정식을 제공하고 일관성없는 결과를 얻습니다. – Eyal

답변

2

Bitmap.Load ("filename.jpeg")가 항상 각 컴퓨터에서 동일한 비트 맵을 생성하지는 않는다는 사실이 나타났습니다. 나는 아직도 그것이 왜 있는지 모른다.

+0

나는 조금 혼란 스럽다. 무슨 dosnt 동일한 비트 맵 (미안 해요, 멍청한 놈, 나는 내 자신의 이미지 조작 라이브러리를 만들고있다)를 생산 의미합니까? – masfenix

+0

(새로운 Bitmap ("foo.jpg")). getPixel (10,10)의 출력은 각 컴퓨터마다 다를 수 있습니다. – Eyal

1
  • 소프트웨어의 하나 이상의 버그 (예 : 초기화되지 않은 변수)?

  • 오래된 인텔 CPU 부동 소수점 분할 버그?

  • 수치 적으로 불안정한 알고리즘?

+1

+1 옛 인텔 버그, 그 기억이 +1. – rook

+0

VB.Net에는 초기화되지 않은 변수가 없어야하지만 이러한 경우에는 모든 경고가 켜져 있고 아무 것도 없습니다. 어쩌면 List.OrderBy()가 무작위 피벗과 함께 비 안정 QuickSort를 사용하고 있습니까? – Eyal

1

화면 드라이버 - 각 드라이버가 GUI 값을 다르게 지정합니다. 픽셀 수는 같지만 화면 드라이버를 통해 색 농도가 다를 수 있습니다. 이제 배열을 설정하고 그 배열을 해당 컴퓨터에서 비교하면 몇 바이트의 차이가 나타날 수 있습니다.

합계 $를 출력하고 최대 합계를 확인하십시오.

관련 문제