Issue #9499 has been updated by Tomoyuki Chikanaga. Backport changed from 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: DONE backported at r46789. ---------------------------------------- Bug #9499: The Vector.cross_product function returns the opposite vector of the expected result https://bugs.ruby-lang.org/issues/9499#change-47718 * Author: Deyan Hadzhiev * Status: Closed * Priority: Normal * Assignee: Marc-Andre Lafortune * Category: lib * Target version: * ruby -v: ruby 2.1.0dev (2013-09-22) [i386-mingw32] * Backport: 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: DONE ---------------------------------------- The member function of class Vector returns the opposite vector of the expected result. The function calculates the resulting vector as if the cross_product is v X self instead of self X v. Just to be sure I tried running the exact example from the 2.1.0 documentation, where is specified: Vector[1, 0, 0].cross_product Vector[0, 1, 0] => Vector[0, 0, 1] The documentation is right, but running the example produces Vector[0, 0, -1]. The fix is just to swap the two arguments of the '-' operator. The implementation is in matrix.rb line:1764 -- https://bugs.ruby-lang.org/