001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.commons.math3.linear;
018    
019    import org.apache.commons.math3.exception.MathIllegalArgumentException;
020    import org.apache.commons.math3.exception.util.LocalizedFormats;
021    
022    /**
023     * Exception to be thrown when a symmetric matrix is expected.
024     *
025     * @since 3.0
026     * @version $Id: NonSymmetricMatrixException.java 1416643 2012-12-03 19:37:14Z tn $
027     */
028    public class NonSymmetricMatrixException extends MathIllegalArgumentException {
029        /** Serializable version Id. */
030        private static final long serialVersionUID = -7518495577824189882L;
031        /** Row. */
032        private final int row;
033        /** Column. */
034        private final int column;
035        /** Threshold. */
036        private final double threshold;
037    
038        /**
039         * Construct an exception.
040         *
041         * @param row Row index.
042         * @param column Column index.
043         * @param threshold Relative symmetry threshold.
044         */
045        public NonSymmetricMatrixException(int row,
046                                           int column,
047                                           double threshold) {
048            super(LocalizedFormats.NON_SYMMETRIC_MATRIX, row, column, threshold);
049            this.row = row;
050            this.column = column;
051            this.threshold = threshold;
052        }
053    
054        /**
055         * @return the row index of the entry.
056         */
057        public int getRow() {
058            return row;
059        }
060        /**
061         * @return the column index of the entry.
062         */
063        public int getColumn() {
064            return column;
065        }
066        /**
067         * @return the relative symmetry threshold.
068         */
069        public double getThreshold() {
070            return threshold;
071        }
072    }