亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? matrix.c

?? microwindow 源代碼,嵌入式linux 的圖形系統
?? C
字號:
/* *********************************************************************matrix.c - simple matrix operationsCopyright (C) 1991 Dean RubineThis program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License. See ../COPYING forthe full agreement.**********************************************************************//* Simple matrix operations Why I am writing this stuff over is beyond me*/#undef PIQ_DEBUG#include <stdio.h>#include <stdlib.h>#include <math.h>#include "util.h"#include "matrix.h"typedef	struct array_header *Array;#define EPSILON		(1.0e-10)	/* zero range *//* Allocation functions*/VectorNewVector(r)int r;{	register struct array_header *a;	register Vector v;	a = (struct array_header *)	    allocate(sizeof(struct array_header) + r * sizeof(double), char);	a->ndims = 1;	a->nrows = r;	a->ncols = 1;	v = (Vector) (a + 1);#define CHECK#ifdef CHECK	if(HEADER(v) != (struct array_header *) a ||	   NDIMS(v) != 1 || NROWS(v) != r || NCOLS(v) != 1) {	    	exit_error("NewVector error: v=%x H: %x,%x  D:%d,%d  R:%d,%d  C:%d,%d\n", v,  HEADER(v), a,  NDIMS(v), 1,  NROWS(v), r, NCOLS(v), 1);	    }#endif	return v;}MatrixNewMatrix(r, c)int r, c;{	register struct array_header *a = (struct array_header *)	   allocate(sizeof(struct array_header) + r * sizeof(double *), char);	register int i;	register Matrix m;	m = (Matrix) (a + 1);	for(i = 0; i < r; i++)		m[i] = allocate(c, double);	a->ndims = 2;	a->nrows = r;	a->ncols = c;	return m;}voidFreeVector(v)Vector v;{	free(HEADER(v));}voidFreeMatrix(m)Matrix m;{	register int i;	for(i = 0; i < NROWS(m); i++)		free(m[i]);	free(HEADER(m));}VectorVectorCopy(v)register Vector v;{	register Vector r = NewVector(NROWS(v));	register int i;	for(i = 0; i < NROWS(v); i++)		r[i] = v[i];	return r;}MatrixMatrixCopy(m)register Matrix m;{	register Matrix r = NewMatrix(NROWS(m), NCOLS(m));	register int i, j;	for(i = 0; i < NROWS(m); i++)		for(j = 0; j < NROWS(m); j++)			r[i][j] = m[i][j];	return r;}/* Null vector and matrixes */voidZeroVector(v)Vector v;{	register int i;	for(i = 0; i < NROWS(v); i++) v[i] = 0.0;}voidZeroMatrix(m)Matrix m;{	register int i, j;	for(i = 0; i < NROWS(m); i++)		for(j = 0; j < NCOLS(m); j++)			m[i][j] = 0.0;}voidFillMatrix(m, fill)Matrix m;double fill;{	register int i, j;	for(i = 0; i < NROWS(m); i++)		for(j = 0; j < NCOLS(m); j++)			m[i][j] = fill;}doubleInnerProduct(v1, v2)register Vector v1, v2;{	double result = 0;	register int n = NROWS(v1);	if(n != NROWS(v2)) {		exit_error("InnerProduct %d x %d ", n, NROWS(v2));	    }	while(--n >= 0)		result += *v1++ * *v2++;	return result;}voidMatrixMultiply(m1, m2, prod)register Matrix m1, m2, prod;{	register int i, j, k;	double sum;	if(NCOLS(m1) != NROWS(m2)) {		error("MatrixMultiply: Can't multiply %dx%d and %dx%d matrices",			NROWS(m1), NCOLS(m1), NROWS(m2), NCOLS(m2));		return;	    }	if(NROWS(prod) != NROWS(m1) || NCOLS(prod) != NCOLS(m2)) {		error("MatrixMultiply: %dx%d times %dx%d does not give %dx%d product",			NROWS(m1), NCOLS(m1), NROWS(m2), NCOLS(m2),			NROWS(prod), NCOLS(prod));		return;	    }	for(i = 0; i < NROWS(m1); i++)		for(j = 0; j < NCOLS(m2); j++) {			sum = 0;			for(k = 0; k < NCOLS(m1); k++)				sum += m1[i][k] * m2[k][j];			prod[i][j] = sum;		}}/*Compute result = v'm where	v is a column vector (r x 1)	m is a matrix (r x c)	result is a column vector (c x 1)*/voidVectorTimesMatrix(v, m, prod)Vector v;Matrix m;Vector prod;{	register int i, j;	if(NROWS(v) != NROWS(m)) {		error("VectorTimesMatrix: Can't multiply %d vector by %dx%d",			NROWS(v), NROWS(m), NCOLS(m));		return;	    }	if(NROWS(prod) != NCOLS(m)) {		error("VectorTimesMatrix: %d vector times %dx%d mat does not fit in %d product" ,			NROWS(v), NROWS(m), NCOLS(m), NROWS(prod));		return;	    }	for(j = 0; j < NCOLS(m); j++) {		prod[j] = 0;		for(i = 0; i < NROWS(m); i++)			prod[j] += v[i] * m[i][j];	}}	voidScalarTimesVector(s, v, product)double s;register Vector v, product;{	register int n = NROWS(v);	if(NROWS(v) != NROWS(product)) {		error("ScalarTimesVector: result wrong size (%d!=%d)",			NROWS(v), NROWS(product));		return;	    }	while(--n >= 0)		*product++ = s * *v++;}voidScalarTimesMatrix(s, m, product)double s;register Matrix m, product;{	register int i, j;	if(NROWS(m) != NROWS(product)  || 	   NCOLS(m) != NCOLS(product)) {		error("ScalarTimesMatrix: result wrong size (%d!=%d)or(%d!=%d)",			NROWS(m), NROWS(product),			NCOLS(m), NCOLS(product));		return;	    }	for(i = 0; i < NROWS(m); i++)		for(j = 0; j < NCOLS(m); j++)			product[i][j] = s * m[i][j];}/* Compute v'mv */doubleQuadraticForm(v, m)register Vector v;register Matrix m;{	register int i, j, n;	double result = 0;	n = NROWS(v);	if(n != NROWS(m) || n != NCOLS(m)) {		exit_error("QuadraticForm: bad matrix size (%dx%d not %dx%d)",			NROWS(m), NCOLS(m), n, n);	    }	for(i = 0; i < n; i++)		for(j = 0; j < n; j++) {#ifdef PIQ_DEBUG			printf("%g*%g*%g [%g] %s ",			m[i][j],v[i],v[j],			m[i][j] * v[i] * v[j],			i==n-1&&j==n-1? "=" : "+");#endif			result += m[i][j] * v[i] * v[j];		}	return result;}/* Matrix inversion using full pivoting. * The standard Gauss-Jordan method is used. * The return value is the determinant. * The input matrix may be the same as the result matrix * *	det = InvertMatrix(inputmatrix, resultmatrix); * * HISTORY * 26-Feb-82  David Smith (drs) at Carnegie-Mellon University *	Written. * Sun Mar 20 19:36:16 EST 1988 - converted to this form by Dean Rubine * */int	DebugInvertMatrix = 0;#define PERMBUFSIZE 200	/* Max mat size */#define _abs(x) ((x)>=0 ? (x) : -(x))doubleInvertMatrix(ym, rm)Matrix ym, rm;{	register int i, j, k;	double det, biga, recip_biga, hold;	int l[PERMBUFSIZE], m[PERMBUFSIZE];	register int n;	if(NROWS(ym) != NCOLS(ym)) {		exit_error("InvertMatrix: not square");	    }	n = NROWS(ym);	if(n != NROWS(rm) || n != NCOLS(rm)) {		exit_error("InvertMatrix: result wrong size");	    }	/* Copy ym to rm */		if(ym != rm)		for(i = 0; i < n; i++)			for(j = 0; j < n; j++)				rm[i][j] = ym[i][j];	/*if(DebugInvertMatrix) PrintMatrix(rm, "Inverting (det=%g)\n", det);*/    /* Allocate permutation vectors for l and m, with the same origin       as the matrix. */	if (n >= PERMBUFSIZE) {		exit_error("InvertMatrix: PERMBUFSIZE");	    }	det = 1.0;	for (k = 0; k < n;  k++) {		l[k] = k;  m[k] = k;		biga = rm[k][k];		/* Find the biggest element in the submatrix */		for (i = k;  i < n;  i++)			for (j = k; j < n; j++)				if (_abs(rm[i][j]) > _abs(biga)) {					biga = rm[i][j];					l[k] = i;					m[k] = j;				}		if(DebugInvertMatrix) 			if(biga == 0.0)				PrintMatrix(m, "found zero biga = %g\n", biga);		/* Interchange rows */		i = l[k];		if (i > k)			for (j = 0; j < n; j++) {				hold = -rm[k][j];				rm[k][j] = rm[i][j];				rm[i][j] = hold;			}		/* Interchange columns */		j = m[k];		if (j > k)			for (i = 0; i < n; i++) {				hold = -rm[i][k];				rm[i][k] = rm[i][j];				rm[i][j] = hold;			}		/* Divide column by minus pivot		    (value of pivot element is contained in biga). */		if (biga == 0.0) {			return 0.0;		}		if(DebugInvertMatrix) printf("biga = %g\n", biga);		recip_biga = 1/biga;		for (i = 0; i < n; i++)			if (i != k)				rm[i][k] *= -recip_biga;		/* Reduce matrix */		for (i = 0; i < n; i++)			if (i != k) {				hold = rm[i][k];				for (j = 0; j < n; j++)					if (j != k)						rm[i][j] += hold * rm[k][j];			}		/* Divide row by pivot */		for (j = 0; j < n; j++)			if (j != k)				rm[k][j] *= recip_biga;		det *= biga;	/* Product of pivots */		if(DebugInvertMatrix) printf("det = %g\n", det);		rm[k][k] = recip_biga;	}	/* K loop */	/* Final row & column interchanges */	for (k = n - 1; k >= 0; k--) {		i = l[k];		if (i > k)			for (j = 0; j < n; j++) {				hold = rm[j][k];				rm[j][k] = -rm[j][i];				rm[j][i] = hold;			}		j = m[k];		if (j > k)			for (i = 0; i < n; i++) {				hold = rm[k][i];				rm[k][i] = -rm[j][i];				rm[j][i] = hold;			}	}	if(DebugInvertMatrix) printf("returning, det = %g\n", det);	return det;}#include "bitvector.h"VectorSliceVector(v, rowmask)Vector v;BitVector rowmask;{	register int i, ri;	Vector r = NewVector(bitcount(NROWS(v), rowmask));	for(i = ri = 0; i < NROWS(v); i++)		if(IS_SET(i, rowmask) )			r[ri++] = v[i];	return r;}MatrixSliceMatrix(m, rowmask, colmask)Matrix m;BitVector rowmask, colmask;{	register int i, ri, j, rj;	Matrix r;		r = NewMatrix(bitcount(NROWS(m), rowmask),			     bitcount(NCOLS(m), colmask));	for(i = ri = 0; i < NROWS(m); i++)		if(IS_SET(i, rowmask) ) {			for(j = rj = 0; j < NCOLS(m); j++)				if(IS_SET(j, colmask))					r[ri][rj++] = m[i][j];			ri++;		}	return r;}MatrixDeSliceMatrix(m, fill, rowmask, colmask, r)Matrix m;double fill;BitVector rowmask, colmask;Matrix r;{	register int i, ri, j, rj;	FillMatrix(r, fill);	for(i = ri = 0; i < NROWS(r); i++) {		if(IS_SET(i, rowmask) )  {			for(j = rj = 0; j < NCOLS(r); j++)				if(IS_SET(j, colmask))					r[i][j] = m[ri][rj++];			ri++;		}	}	return r;}voidOutputVector(f, v)FILE *f;register Vector v;{	register int i;	fprintf(f, " V %d   ", NROWS(v));	for(i = 0; i < NROWS(v); i++)		fprintf(f, " %g", v[i]);	fprintf(f, "\n");}VectorInputVector(f)FILE *f;{	register Vector v;	register int i;	char check[4];	int nrows;	if(fscanf(f, "%1s %d", check, &nrows) != 2) {		exit_error("InputVector fscanf 1");	    }	if(check[0] != 'V') {		exit_error("InputVector check");	    }	v = NewVector(nrows);	for(i = 0; i < nrows; i++) {		if(fscanf(f, "%lf", &v[i]) != 1) {			exit_error("InputVector fscanf 2");		    }        }	return v;}voidOutputMatrix(f, m)FILE* f;register Matrix m;{	register int i, j;	fprintf(f, " M %d %d\n", NROWS(m), NCOLS(m));	for(i = 0; i < NROWS(m);  i++) {		for(j = 0; j < NCOLS(m); j++)			fprintf(f, " %g", m[i][j]);		fprintf(f, "\n");	}}MatrixInputMatrix(f)FILE *f;{	register Matrix m;	register int i, j;	char check[4];	int nrows, ncols;	if(fscanf(f, "%1s %d %d", check, &nrows, &ncols) != 3) {		exit_error("InputMatrix fscanf 1");	    }	if(check[0] != 'M') {		exit_error("InputMatrix check");	    }	m = NewMatrix(nrows, ncols);	for(i = 0; i < nrows; i++)            for(j = 0; j < ncols; j++) {			if(fscanf(f, "%lf", &m[i][j]) != 1) {				exit_error("InputMatrix fscanf 2");			    }            }	return m;}doubleInvertSingularMatrix(m, inv)Matrix m, inv;{	register int i, j, k;	BitVector mask;	Matrix sm;	double det, maxdet;	int mi = -1, mj = -1, mk = -1;	maxdet = 0.0;	for(i = 0; i < NROWS(m); i++) {		printf("r&c%d, ", i); 		SET_BIT_VECTOR(mask);		BIT_CLEAR(i, mask);		sm = SliceMatrix(m, mask, mask);		det = InvertMatrix(sm, sm);		if(det == 0.0)			printf("det still 0\n");		else {			printf("det = %g\n", det);		}		if(_abs(det) > _abs(maxdet))			maxdet = det, mi = i;		FreeMatrix(sm);	}	printf("\n");	printf("maxdet=%g when row %d left out\n", maxdet, mi);	if(fabs(maxdet) > 1.0e-6) {		goto found;	}	maxdet = 0.0;	for(i = 0; i < NROWS(m); i++) {	     for(j = i+1; j < NROWS(m); j++) {		/* printf("leaving out row&col %d&%d, ", i, j); */		SET_BIT_VECTOR(mask);		BIT_CLEAR(i, mask);		BIT_CLEAR(j, mask);		sm = SliceMatrix(m, mask, mask);		det = InvertMatrix(sm, sm);		/*		if(det == 0.0)			printf("det still 0\n");		else {			printf("det = %g\n", det);		}		*/		if(abs(det) > abs(maxdet))			maxdet = det, mi = i, mj = j;		FreeMatrix(sm);	    }	}	printf("maxdet=%g when rows %d,%d left out\n", maxdet, mi, mj);	if(_abs(maxdet) > 1.0e-6) {		goto found;	}	maxdet = 0.0;	for(i = 0; i < NROWS(m); i++) {	   for(j = i+1; j < NROWS(m); j++) {	      for(k = j+1; k < NROWS(m); k++) {		/* printf("leaving out row&col %d,%d&%d, ", i, j, k); */		SET_BIT_VECTOR(mask);		BIT_CLEAR(i, mask);		BIT_CLEAR(j, mask);		BIT_CLEAR(k, mask);		sm = SliceMatrix(m, mask, mask);		det = InvertMatrix(sm, sm);		/*		if(det == 0.0)			printf("det still 0\n");		else {			printf("det = %g\n", det);		}		*/		if(_abs(det) > _abs(maxdet))			maxdet = det, mi = i, mj = j, mk = k;		FreeMatrix(sm);	      }	   }	}	printf("maxdet=%g when rows %d,%d&%d left out\n", maxdet, mi, mj, mk);	if(mk == -1)		return 0.0;found:	SET_BIT_VECTOR(mask);	if(mi >= 0) BIT_CLEAR(mi, mask);	if(mj >= 0) BIT_CLEAR(mj, mask);	if(mk >= 0) BIT_CLEAR(mk, mask);	sm = SliceMatrix(m, mask, mask);	det = InvertMatrix(sm, sm);	DeSliceMatrix(sm, 0.0, mask, mask, inv);	FreeMatrix(sm);	PrintMatrix(inv, "desliced:\n");	return det;}/* You can fairly confidently ignore the compiler warnings after here */voidPrintVector(v, s,a1,a2,a3,a4,a5,a6,a7,a8)register Vector v;char *s; int a1,a2,a3,a4,a5,a6,a7,a8;{	register int i;	printf(s,a1,a2,a3,a4,a5,a6,a7,a8);	for(i = 0; i < NROWS(v); i++) printf(" %8.4f", v[i]);	printf("\n");}voidPrintMatrix(m, s,a1,a2,a3,a4,a5,a6,a7,a8)register Matrix m;char *s; int a1,a2,a3,a4,a5,a6,a7,a8;{	register int i, j;	printf(s,a1,a2,a3,a4,a5,a6,a7,a8);	for(i = 0; i < NROWS(m);  i++) {		for(j = 0; j < NCOLS(m); j++)			printf(" %8.4f", m[i][j]);		printf("\n");	}}voidPrintArray(a, s,a1,a2,a3,a4,a5,a6,a7,a8)Array a;char *s; int a1,a2,a3,a4,a5,a6,a7,a8;{	switch(NDIMS(a)) {	case 1: PrintVector((Vector) a, s,a1,a2,a3,a4,a5,a6,a7,a8); break;	case 2: PrintMatrix((Matrix) a, s,a1,a2,a3,a4,a5,a6,a7,a8); break;	default: error("PrintArray");	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色一级视频| 久久久一区二区| 精品久久五月天| 悠悠色在线精品| 国产一区二区不卡在线| 99久久国产免费看| 26uuu国产在线精品一区二区| 日本一区二区三区高清不卡| 午夜电影网一区| av中文一区二区三区| 日韩视频一区在线观看| 综合久久一区二区三区| 国产麻豆精品久久一二三| 欧美日韩一区三区| 国产欧美精品日韩区二区麻豆天美| 亚洲国产精品一区二区久久恐怖片| 国产成人精品亚洲午夜麻豆| 日韩欧美亚洲另类制服综合在线| 亚洲啪啪综合av一区二区三区| 国产乱妇无码大片在线观看| 制服丝袜激情欧洲亚洲| 亚洲制服丝袜av| 94色蜜桃网一区二区三区| 日本一区二区综合亚洲| 六月丁香婷婷久久| 欧美日韩夫妻久久| 亚洲国产毛片aaaaa无费看 | 激情六月婷婷久久| 91精品蜜臀在线一区尤物| 午夜久久福利影院| 精品视频在线免费观看| 亚洲一区二区偷拍精品| 欧美日韩午夜影院| 亚洲妇熟xx妇色黄| 欧美男人的天堂一二区| 午夜不卡av在线| 91精品国产综合久久久蜜臀粉嫩| 日韩精品欧美精品| 欧美一区日本一区韩国一区| 日韩和欧美的一区| 欧美精品一区视频| 精品在线亚洲视频| 国产日韩欧美电影| av综合在线播放| 尤物av一区二区| 欧美精品日韩一区| 精品一区二区av| 久久久99免费| 成人午夜看片网址| 亚洲色图丝袜美腿| 欧美性受xxxx| 日本女优在线视频一区二区| 日韩视频一区在线观看| 国产在线一区观看| 国产日韩欧美亚洲| 色综合天天综合色综合av| 亚洲激情六月丁香| 日韩一区二区在线观看视频| 国产美女一区二区三区| 国产精品日日摸夜夜摸av| 99精品国产热久久91蜜凸| 有码一区二区三区| 欧美一区二区三区免费在线看| 免费看欧美女人艹b| 国产亚洲一区字幕| jlzzjlzz国产精品久久| 亚洲最新在线观看| 久久久久国产精品麻豆ai换脸| 国产福利不卡视频| 亚洲免费av在线| 日韩免费观看高清完整版在线观看| 国产成人欧美日韩在线电影| 亚洲国产精品久久人人爱蜜臀| 久久亚洲精华国产精华液| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲精品一区二区三区福利| 豆国产96在线|亚洲| 亚洲成人av电影在线| 久久这里只有精品首页| 欧美性色综合网| 国产宾馆实践打屁股91| 午夜国产精品一区| 亚洲日本免费电影| 精品蜜桃在线看| 欧美美女一区二区在线观看| 成人一区在线观看| 激情久久五月天| 午夜久久久影院| 亚洲伦理在线精品| 日本一区二区三区在线不卡| 欧美精品99久久久**| 一本一道久久a久久精品| 经典一区二区三区| 视频一区视频二区中文| 国产精品女同互慰在线看| 精品日韩在线观看| 欧美日韩免费视频| 91视频你懂的| 国产福利不卡视频| 国产在线视频不卡二| 午夜欧美视频在线观看| 亚洲一区二区精品久久av| 1024成人网| 国产精品视频看| 国产人伦精品一区二区| 日韩一级精品视频在线观看| 欧美在线观看视频一区二区| 成人丝袜高跟foot| 国产91对白在线观看九色| 国内精品国产成人国产三级粉色| 水蜜桃久久夜色精品一区的特点| 亚洲欧美视频在线观看视频| 日本在线不卡视频| 亚洲18影院在线观看| 亚洲大型综合色站| 亚洲图片欧美视频| 亚洲影院理伦片| 亚洲一级二级三级在线免费观看| 亚洲欧美日韩国产手机在线| 中文字幕+乱码+中文字幕一区| 久久久蜜桃精品| 国产欧美精品区一区二区三区| 久久精品亚洲精品国产欧美| 久久久久久久久久久久久女国产乱| 欧美tk—视频vk| 亚洲精品一区二区三区四区高清| 欧美va天堂va视频va在线| 精品国产第一区二区三区观看体验| 精品免费日韩av| 国产精品网站在线| 亚洲柠檬福利资源导航| 一区二区在线电影| 天天操天天干天天综合网| 麻豆精品新av中文字幕| 国产自产2019最新不卡| 成人av网站在线观看免费| 91蜜桃婷婷狠狠久久综合9色| 欧美吻胸吃奶大尺度电影| 制服.丝袜.亚洲.中文.综合| 26uuu亚洲综合色| 中文字幕在线免费不卡| 亚洲一区二区精品视频| 日本中文在线一区| 国产精品99久久久久久似苏梦涵 | 精品sm捆绑视频| 亚洲国产岛国毛片在线| 一区二区三区久久| 欧美性xxxxx极品少妇| 在线播放91灌醉迷j高跟美女| 欧美mv日韩mv亚洲| 中文字幕亚洲欧美在线不卡| 亚洲国产视频直播| 国产久卡久卡久卡久卡视频精品| jizz一区二区| 91精品国产品国语在线不卡| 国产精品麻豆一区二区| 日韩在线一二三区| 成人国产亚洲欧美成人综合网| 欧美日本在线看| 欧美韩日一区二区三区四区| 五月天精品一区二区三区| 粉嫩欧美一区二区三区高清影视| 欧美特级限制片免费在线观看| 亚洲精品一区二区三区精华液| 一区二区在线观看av| 国产一区二区女| 欧美高清hd18日本| 一区在线中文字幕| 激情深爱一区二区| 欧美精品久久久久久久多人混战 | 亚洲最快最全在线视频| 国产伦理精品不卡| 欧美精品在线一区二区| 亚洲少妇30p| 国产精品一区二区91| 欧美精品一二三| 亚洲区小说区图片区qvod| 国产精品影音先锋| 精品日韩欧美一区二区| 亚洲国产精品麻豆| 色老头久久综合| 亚洲国产高清aⅴ视频| 狠狠色狠狠色综合| 欧美一区二区在线视频| 亚洲一区二区三区四区在线 | 狠狠色丁香久久婷婷综合丁香| 色香色香欲天天天影视综合网| 久久久精品国产免大香伊| 奇米一区二区三区av| 欧美日韩久久不卡| 亚洲一区中文在线| 一本一本大道香蕉久在线精品| 蜜乳av一区二区三区| 欧美色精品在线视频| 亚洲欧美激情插| 在线观看一区日韩| 亚洲一区二区欧美日韩| 91色视频在线| 伊人开心综合网| 欧美在线一区二区三区|