View Javadoc
1   /*
2    * Licensed to the Hipparchus project under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The Hipparchus project licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      https://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.hipparchus.linear;
18  
19  import org.hipparchus.complex.Complex;
20  
21  /** Container for index and eigenvalue pair.
22   * @since 3.0
23   */
24  class IndexedEigenvalue {
25  
26      /** Index in the diagonal matrix. */
27      private int index;
28  
29      /** Eigenvalue. */
30      private final Complex eigenValue;
31  
32      /** Build the container from its fields.
33       * @param index index in the diagonal matrix
34       * @param eigenvalue eigenvalue
35       */
36      IndexedEigenvalue(final int index, final Complex eigenvalue) {
37          this.index      = index;
38          this.eigenValue = eigenvalue;
39      }
40  
41      /** Get the index in the diagonal matrix.
42       * @return index in the diagonal matrix
43       */
44      public int getIndex() {
45          return index;
46      }
47  
48      /** Set the index in the diagonal matrix.
49       * @param index new index in the diagonal matrix
50       */
51      public void setIndex(final int index) {
52          this.index = index;
53      }
54  
55      /** Get the eigenvalue.
56       * @return eigenvalue
57       */
58      public Complex getEigenvalue() {
59          return eigenValue;
60      }
61  
62      /** {@inheritDoc} */
63      @Override
64      public boolean equals(final Object other) {
65  
66          if (this == other) {
67              return true;
68          }
69  
70          if (other instanceof IndexedEigenvalue) {
71              final IndexedEigenvalue rhs = (IndexedEigenvalue) other;
72              return eigenValue.equals(rhs.eigenValue);
73          }
74  
75          return false;
76  
77      }
78  
79      /**
80       * Get a hashCode for the pair.
81       * @return a hash code value for this object
82       */
83      @Override
84      public int hashCode() {
85          return 4563 + index + eigenValue.hashCode();
86      }
87  
88  }